2017-06-19 41 views
1

我問過類似的問題,有一天用數據來自兩列:通過唯一值分組而調換列

Grouping columns by unique values in Python

現在我有三列。他們需要按列A分組,列B作爲標題值,列C正確排序。

我的數據幀的樣子:

A B C 
25115 20 45 
25115 30 154 
25115 40 87 
25115 70 21 
25115 90 74 
26200 10 48 
26200 20 414 
26200 40 21 
26200 50 288 
26200 80 174 
26200 90 54 

但我需要這個來結束:

 10 20 30 40 50 70 80 90 
25115  45 154 87  21  74 
26200 48 414  21 288  174 54 

這得到C列的值,而與B列作爲行名稱。

import pandas as pd 
df = pd.DataFrame({'A':[25115,25115,25115,25115,25115,26200,26200,26200,26200,26200,26200],'B':[20,30,40,70,90,10,20,40,50,80,90],'C':[45,154,87,21,74,48,414,21,288,174,54]}) 
a = df.groupby('A')['C'].apply(lambda x:' '.join(x.astype(str))) 

任何想法將不勝感激。

+0

這麼幾件事情,好像你所做的就是複製別人在前面的例子中規定的兩列,甚至沒有修改代碼第二,許多人在該主題中給了你很好的答案,並且似乎你正在使用其中的一些答案,但是你沒有接受他們的答案是正確的。 –

回答

1
  • 選項1:

使用pivot_table:

df.pivot_table(values='C',index='A',columns='B') 

輸出

B  10  20  30 40  50 70  80 90 
A               
25115 NaN 45.0 154.0 87.0 NaN 21.0 NaN 74.0 
26200 48.0 414.0 NaN 21.0 288.0 NaN 174.0 54.0 
  • 選項2:

使用set_index /拆散:

df.set_index(['A','B'])['C'].unstack() 

輸出:

B  10  20  30 40  50 70  80 90 
A               
25115 NaN 45.0 154.0 87.0 NaN 21.0 NaN 74.0 
26200 48.0 414.0 NaN 21.0 288.0 NaN 174.0 54.0 
+0

非常感謝! –