python - Pandas 交叉表中的加权结果

标签 python pandas scipy crosstab statsmodels

我想使用第三列来加权 pandas 交叉表中的结果。

例如,以下内容:

import pandas as pd
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'bar'],
                   'B': [1, 1, 0, 0, 0],
                   'weight': [2, 3, 4, 5, 6]})
print(pd.crosstab(df.A, df.B))

结果:

B    0  1
A        
bar  2  1
foo  1  1

我想要的结果是:

B     0  1
A        
bar  11  3
foo   4  2

最佳答案

您可以使用 aggfunc 参数为交叉表提供自定义聚合函数:

pd.crosstab(df.A, df.B, df.weight, aggfunc = sum)
B     0  1
A         
bar  11  3
foo   4  2

关于python - Pandas 交叉表中的加权结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30314217/

相关文章:

python - python 中 "lambda"函数的模糊性

python - 匹配不需要的链接

python - 有没有办法对齐具有相同索引位置的多个列表?

python - Matplotlib - 在子图之间共享轴时缺少一些刻度

python - 将具有不同大小行的 txt 中的值读取到单个 numpy 数组中

python - 如何以编程方式识别钟形曲线中的第一个和第二个最小值以及峰值?

python - 按特定顺序对 Pandas DataFrame 中的列进行排序

python - 创建以另一列值为条件的 pandas 列

python pandas 创建数据框连胜

python - 如何在 Mayavi2/VTK 中为绘图添加比例尺?