![](/img/trans.png)
[英]how to create new columns in pandas based on a column's values within a dataframe (pivot or unpivot ? )
[英]Pandas how to pivot/unpivot/add a dummy column name
我想從長表轉換為寬表,其中包含基於 accid 數創建的虛擬列名
樣品 excel 輸入與 output 附加
請幫忙
我能夠減少到 2 個步驟,使用pivot_table
aggfunc=list
進行數據透視表,然后從該列表創建新列。
我不確定我是否想出了你想要的,因為對列的分配只是從左邊填滿。
創建 DataFrame:
so = pd.DataFrame({'AccID': 'B1 B2 B3 B4 B5 B6 B7'.split(),
'UserID': 'A1 A1 A1 A2 A2 A3 A4'.split()}
)
AccID UserID
0 B1 A1
1 B2 A1
2 B3 A1
3 B4 A2
4 B5 A2
5 B6 A3
6 B7 A4
Pivot表:
tmp = pd.pivot_table(data=so, index='UserID', aggfunc=list)
AccID
UserID
A1 [B1, B2, B3]
A2 [B4, B5]
A3 [B6]
A4 [B7]
列表中的新列:
ans = pd.DataFrame(tmp['AccID'].to_list(), index=tmp.index)
0 1 2
UserID
A1 B1 B2 B3
A2 B4 B5 None
A3 B6 None None
A4 B7 None None
更改列名:
ans.columns = [f"AccID{i + 1}" for i in ans.columns]
AccID1 AccID2 AccID3
UserID
A1 B1 B2 B3
A2 B4 B5 None
A3 B6 None None
A4 B7 None None
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.