Tôi có một dataframe gấu trúc với hai biến id:Unmelt Pandas DataFrame
df = pd.DataFrame({'id': [1,1,1,2,2,3],
'num': [10,10,12,13,14,15],
'q': ['a', 'b', 'd', 'a', 'b', 'z'],
'v': [2,4,6,8,10,12]})
id num q v
0 1 10 a 2
1 1 10 b 4
2 1 12 d 6
3 2 13 a 8
4 2 14 b 10
5 3 15 z 12
tôi có thể xoay bảng với:
df.pivot('id','q','v')
Và kết thúc với một cái gì đó gần gũi:
q a b d z
id
1 2 4 6 NaN
2 8 10 NaN NaN
3 NaN NaN NaN 12
Tuy nhiên, những gì tôi thực sự muốn là (hình thức ban đầu chưa được tiết lộ):
id num a b d z
1 10 2 4 NaN NaN
1 12 NaN NaN 6 NaN
2 13 8 NaN NaN NaN
2 14 NaN 10 NaN NaN
3 15 NaN NaN NaN 12
Nói cách khác:
- 'id' và 'num' chỉ số của tôi (bình thường, tôi đã chỉ nhìn thấy một trong hai 'id' hoặc 'num' là chỉ số nhưng tôi cần cả hai kể từ khi tôi m cố gắng để lấy lại hình thức lớn nằm gốc)
- 'q' là cột của tôi
- 'v' là những giá trị của mình trong bảng
cập nhật
Tôi tìm thấy một giải pháp gần từ Wes McKinney's blog:
df.pivot_table(index=['id','num'], columns='q')
v
q a b d z
id num
1 10 2 4 NaN NaN
12 NaN NaN 6 NaN
2 13 8 NaN NaN NaN
14 NaN 10 NaN NaN
3 15 NaN NaN NaN 12
Tuy nhiên, định dạng là không hoàn toàn giống như những gì tôi muốn ở trên.
Ahhh, tôi đã rất gần! Tôi biết rằng nó đã làm với 'df.columns.name' nhưng không thể tìm ra cách sử dụng' đổi tên' một cách thích hợp. Cảm ơn bạn đã giúp đỡ! – slaw
Lưu ý quan trọng: "chặt chẽ" âm thanh như "xà lách". –