鉴于此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/