给定此数据帧:
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
我想获得以下摘要数据帧:
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
列。你知道吗
愚蠢的做法
可以使用pivot_table()方法:
或者,您可以使用
groupby()
、size()
和unstack()
——这就是pivot_table()
在引擎盖下的方式:10万行数据框的计时:
1M排DF的计时:
最简洁的方法可能是
pandas.crosstab
函数:相关问题 更多 >
编程相关推荐