簡體   English   中英

Pandas 如何旋轉/取消旋轉/添加虛擬列名稱

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM