python - Pandas - 从行数中获取汇总数据框

标签 python pandas numpy dataframe

给定这个 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 - 从行数中获取汇总数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40556597/

相关文章:

python-3.x - 如何删除数据框中空值数量超过 x 的行?

python - Numpy 附加到 python 列表的两个元素

python - Tensorflow,预测值概率 (ROI)

pandas - 如何从 Spark 以 Feather 格式\存储保存文件?

python - 用 Pandas 延迟加载 csv

python - 如何比较数据帧中两个连续字段是否相同?

python - 对于给定的稀疏矩阵,如何将其与给定的二进制值向量相乘

python pickle 大小限制

python - f.readline() 有问题吗?

python - 无法在 Mac 中从 Python 卸载 matplotlib、numpy 和 scipy。无法从 virtualenv 导入 matplotlib