python - Pandas 交叉表,但具有来自第三列聚合的值

标签 python pandas aggregate

这是我的问题:

df = pd.DataFrame({'A': ['one', 'one', 'two', 'two', 'one'] ,
                   'B': ['Ar', 'Br', 'Cr', 'Ar','Ar'] ,
                   'C': [1, 0, 0, 1,0 ]})

我想生成类似于 pd.crosstab 函数的输出,但是列和行交叉点上的值应该来自第三列的聚合:

    Ar,  Br, Cr
one 0.5 0  0
two 1  0  0

例如,'one'和'Ar'有两种情况,'C'列中对应的值为1,0我们将'C'列中的值相加(0 + 1)并除以值的数量“C”列,所以我们得到 (0+1)/2 =0.5。每当组合不存在时,我们(如“Cr”和“one”)将其设置为零。有什么想法吗?

最佳答案

你可以使用pivot_table()方法,默​​认使用 aggfunc='mean':

In [46]: df.pivot_table(index='A', columns='B', values='C', fill_value=0)
Out[46]:
B     Ar  Br  Cr
A
one  0.5   0   0
two  1.0   0   0

关于python - Pandas 交叉表,但具有来自第三列聚合的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39735068/

相关文章:

python - 使用 pandas groupby 查找列最大值的日期和值

python - 将嵌套的 json 插入 cassandra

python - 我可以将 webapp2.RequestHandler 请求异步复制到不同的 url 吗?

python - 将多个 int 列/行合并为一个 numpy 数组(pandas 数据框)

r - 基于 2 个其他列查找一列的平均值 RStudio

python - ValueError : Error when checking input: expected input_1 to have 4 dimensions, 但得到形状为 (6243, 256, 256) 的数组

python - 将大型数据帧插值到稀疏、不规则的索引上

python - 将查找表应用于 DataFrame 以获取 bin 或范围

C# Linq Group By 多列

django - Django 中 DateTime 字段之间的聚合差异