สมมติว่าคุณมี DataFrame และต้องการ transpose (สลับแถวและคอลัมน์)
วิธีที่ 1: ใช้ List Comprehension (Manual)
- สร้าง DataFrame
- ใช้ nested list comprehension สลับ index
- สร้าง DataFrame ใหม่จากผลลัพธ์
ตัวอย่าง
import pandas as pd
data = [[1, 2, 3], [4, 5, 6]]
df = pd.DataFrame(data)
print("DataFrame ต้นฉบับ:\n", df)
# Manual transpose
result = [[data[i][j] for i in range(len(data))] for j in range(len(data[0]))]
df2 = pd.DataFrame(result)
print("\nTransposed (manual):\n", df2)
วิธีที่ 2: ใช้ transpose() หรือ .T (แนะนำ)
print("\nTransposed (df.T):\n", df.T)
# หรือ
print("\nTransposed (df.transpose()):\n", df.transpose())
วิธีที่ 3: ใช้ zip()
result = zip(*data)
df2 = pd.DataFrame(result)
print("\nTransposed (zip):\n", df2)
ผลลัพธ์ (ทุกวิธี)
DataFrame ต้นฉบับ:
0 1 2
0 1 2 3
1 4 5 6
Transposed:
0 1
0 1 4
1 2 5
2 3 6
คำอธิบาย:
- df.T หรือ df.transpose(): วิธีมาตรฐาน เร็วที่สุด รองรับทุก dtype
- zip(*data): Python built-in unpacking rows แล้ว zip คอลัมน์กัน
- List comprehension: เข้าใจ logic ได้ แต่ช้าและไม่จัดการ dtype อัตโนมัติ
- Transpose สลับ shape จาก (rows, cols) เป็น (cols, rows)