2016-05-31 152 views
1

我有兩列,名稱及汽車,也就是在一個城市擁有的每一輛汽車的熊貓數據幀不同的事件,算上熊貓

Name Car 
0 Alice Toyota 
1 Bob  Nissan 
2 Charlie Toyota 
3 Dave Ford 
4 Eve  Nissan 
5 Bob  Ford 

,我希望做一個彙總表

Name Toyota Nissan Ford 
0 Alice 1  0  1 
1 Bob  0  1  0 
2 Charlie 1  0  0 
3 Dave 0  0  1 
4 Eve  0  1  0 

我一直試圖GROUPBY,計數,應用,轉化,而我只是太新的遊戲...

其實,品牌屈指可數,這將是理想的有辦法將它們作爲一個系列來處理,例如, .g。,將整行記錄爲Series。任何幫助表示讚賞。

回答

1

使用pivot_table()功能爲:

In [30]: df.pivot_table(index=['Name'], columns=['Car'], aggfunc=len, fill_value=0) 
Out[30]: 
Car  Ford Nissan Toyota 
Name 
Alice  0  0  1 
Bob   1  1  0 
Charlie  0  0  1 
Dave  1  0  0 
Eve   0  1  0 

,或者如果你不想有Name爲索引:

In [31]: df.pivot_table(index=['Name'], columns=['Car'], aggfunc=len, fill_value=0).reset_index() 
Out[31]: 
Car  Name Ford Nissan Toyota 
0  Alice  0  0  1 
1  Bob  1  1  0 
2 Charlie  0  0  1 
3  Dave  1  0  0 
4  Eve  0  1  0 

相反,如果你想擁有隻是一個布爾矩陣使用get_dummies() - 它不會計數重複:

In [33]: pd.get_dummies(df.set_index('Name')) 
Out[33]: 
     Car_Ford Car_Nissan Car_Toyota 
Name 
Alice   0.0   0.0   1.0 
Bob   0.0   1.0   0.0 
Charlie  0.0   0.0   1.0 
Dave   1.0   0.0   0.0 
Eve   0.0   1.0   0.0 
Bob   1.0   0.0   0.0 
+0

所以這就是一個什麼數據透視表是!感到尷尬: - /謝謝! –