鉴于此DataFrame:

    bowl    cookie
0   one     chocolate
1   two     chocolate
2   two     chocolate
3   two     vanilla
4   one     vanilla
5   one     vanilla
6   one     vanilla
7   one     vanilla
8   one     vanilla
9   two     chocolate


我想获得以下汇总的DataFrame:

        vanilla     chocolate
one     5           1
two     1           3


除了手动进行:

vanilla_bowl1 = len(df_picks[(df_picks['bowl'] == 'one') & (df_picks['cookie'] == 'vanilla')])
vanilla_bowl2 = len(df_picks[(df_picks['bowl'] == 'two') & (df_picks['cookie'] == 'vanilla')])
chocolate_bowl1 = ...
chocolate_bowl2 = ...


有没有一种方法可以通过Pandas进行一次操作?



注意:我已经看过df.pivot()了,只要我在每行中添加等于count的列1,就可以了:

    bowl    cookie      count
0   one     chocolate       1
1   two     chocolate       1
2   two     chocolate       1
3   two     vanilla         1
4   one     vanilla         1
5   one     vanilla         1
6   one     vanilla         1
7   one     vanilla         1
8   one     vanilla         1
9   two     chocolate       1


然后

df.pivot(index='bowl', columns='cookie', values='count')


但是,我想知道是否有更直接的方法,该方法不需要首先添加count列。

最佳答案

最简洁的方法可能是pandas.crosstab函数:

>>> pandas.crosstab(d.bowl, d.cookie)
cookie  chocolate  vanilla
bowl
one             1        5
two             3        1

关于python - Pandas -从行数中获取汇总数据透视图DataFrame,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40556597/

10-11 20:30
查看更多