gpt4 book ai didi

python - Groupby 多列产品聚合

转载 作者:行者123 更新时间:2023-12-03 23:41:32 24 4
gpt4 key购买 nike

我有一个包含多个项目的 Pandas 数据框,计数如下:


指数
项目 1
项目 2
第 3 项
计数 1
计数2
计数3


1
0
0.5
0.5
10
15
0

2
0.5
0
0.5
20
20
20

3
1
0
0
30
10
30

4
0
1
0
20
20
0


我要groupby按项目的数据,与产品聚合,以便我最终得到一个数据框,该数据框将项目作为索引,计数作为列,单元格 i、j 处的值等于 item{i} * count{j} 的总和.例如:


指数
计数 1
计数2


项目 1
(0 * 10) + (0.5 * 20) + (1 * 30) + (0 * 20) = 40
(0 * 15) + (0.5 * 20) + (1 * 10) + (0 * 20) = 20

项目 2
(0.5 * 10) + (0 * 20) + (0 * 30) + (1 * 20) = 25
(0.5 * 15) + (0 * 20) + (0 * 10) + (1 * 20) = 27.5


我试过使用 groupby :

df[items + counts].groupby(items).agg('prod')
df.groupby(items)[counts].agg('prod')
但问题是 groupby使用列的值而不是列本身,我遇到了与 pivot_table 相同的问题:
df.pivot_table(index=items, values=counts, aggfunc='prod')
我觉得解决方案应该是微不足道的,但我不能完全指出我所缺少的东西。

最佳答案

IIUC,你可以用dot项目与计数:

# create DataFrame with only item columns
items = df.filter(regex='^item')

# create DataFrame with only count columns
counts = df.filter(regex='^count')

# compute dot product
res = items.T.dot(counts)

print(res)
输出
       count1  count2  count3
item1 40.0 20.0 40.0
item2 25.0 27.5 0.0
item3 15.0 17.5 10.0
使用 filter 获得项目和计数 DataFrames .

关于python - Groupby 多列产品聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65448087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com