首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在pandas中将groupby语句中的两列相乘

在pandas中将groupby语句中的两列相乘
EN

Stack Overflow用户
提问于 2019-10-02 08:40:50
回答 2查看 2K关注 0票数 2

我有一个名为df的简化数据帧。

代码语言:javascript
运行
复制
import pandas as pd
df = pd.DataFrame({'num': [1,1,2,2],
               'price': [12,11,15,13],
               'y': [7,7,9,9]})

我想用数字分组,然后乘以价格和y,然后取和除以y的和。

我一直在试着开始做这件事,但是遇到了麻烦

代码语言:javascript
运行
复制
df.groupby('letter').agg(['price']*['quantity'])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-02 08:55:34

基本上你想要计算一个加权平均值

为此,一种方法是:

代码语言:javascript
运行
复制
import numpy as np
# define custom function with 'y'column as weights
weights = lambda x: np.average(x,weights=df.loc[x.index,'y'])
# aggregate using this new function
df.groupby('num').agg({'price': weights})
票数 1
EN

Stack Overflow用户

发布于 2019-10-02 09:16:55

在groupby操作之前,您可以向计算中间结果(price * y)的数据帧添加一个临时列,然后在groupby操作中使用该列(求和,然后使用eval计算temp除以y的和)。将结果转换回一个dataframe,并将新列命名为任意名称。

代码语言:javascript
运行
复制
>>> (df
     .assign(temp=df.eval('price * y'))
     .groupby('num')
     .sum()
     .eval('temp / y')
     .to_frame('result')
)
     result
num        
1      11.5
2      14.0
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58193884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档