簡體   English   中英

Python pandas 如何轉置 df :列值到行值?

[英]Python pandas how to transpose df : value of columns to value of rows?

原始df:

df=pd.DataFrame({'name':['id1','id1','id2','id2','id2'],
             'attr1':['a','b','c','d','e']})
    Out[45]: 
  name attr1
0  id1     a
1  id1     b
2  id2     c
3  id2     d
4  id2     e

我想要的是:

在此處輸入圖片說明

系統需要更多細節,但我無話可說,所以請不要在這里查看這些文字,這會浪費您的時間。

讓我們嘗試使用附加鍵分配cumcount

s = df.assign(key=df.groupby('name').cumcount()+1).pivot('name','key','attr1')

s
Out[125]: 
key   1  2    3
name           
id1   a  b  NaN
id2   c  d    e

做就是了

  1. 分組列
  2. 添加 lambda agg 函數
  3. 拆分為列。

df.groupby('name') .agg(lambda x: '|'.join(x)) .attr1.str.split('|',expand=True)

以上三者結合

>> df.groupby('name').agg(lambda x: '|'.join(x)).attr1.str.split('|',expand=True)

      0  1     2
name            
id1   a  b  None
id2   c  d     e

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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