计算熊猫中不同的事件

时间:2016-05-31 16:56:04

标签: python-3.x pandas count

我有一个pandas DataFrame,其中包含一个城市拥有的每辆汽车的两列,名称和汽车,

  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,count,apply,transform,但我对游戏来说太新了......

实际上,这些品牌已经过编号,理想的做法是将它们作为系列进行处理,例如,将整行作为系列进行处理。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分: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