gpt4 book ai didi

具有两个条件的python groupby并计算平均值

转载 作者:太空狗 更新时间:2023-10-30 02:52:42 24 4
gpt4 key购买 nike

我有一个数据框如下。我想按两个条件(“日期”列和“价格”列)对这个数据框进行分组,并添加一列来计算“price2”(具有相同的日期和价格)的平均值。谢谢。

import pandas as pd
import numpy as np
df2 = pd.DataFrame({
'date': [20130101,20130101, 20130105, 20130105, 20130101, 20130108],
'price': [25, 25, 23.5, 27, 40, 8],
'price2':[23,56,45,67,33,2]
})
date output price price2
0 20130101 39.5 25.0 23
1 20130101 39.5 25.0 56
2 20130105 45.0 23.5 45
3 20130105 67.0 27.0 67
4 20130101 33.0 40.0 33
5 20130108 2.0 8.0 2

最佳答案

试试这个,使用 pandas.DataFrame.groupby.transform:

newdf=df2.groupby(['date','price']).transform('mean')

现在:

print(newdf)

是:

   price2
0 39.5
1 39.5
2 45.0
3 67.0
4 33.0
5 2.0

现在要获得额外的列,请执行以下操作:

newdf.columns=['output']
newdf=pd.concat([newdf,df2],axis=1)

然后现在:

print(newdf)

是:

   output      date  price  price2
0 39.5 20130101 25.0 23
1 39.5 20130101 25.0 56
2 45.0 20130105 23.5 45
3 67.0 20130105 27.0 67
4 33.0 20130101 40.0 33
5 2.0 20130108 8.0 2

然后还添加:

df2=df2.insert(1, 'output', newdf)

如果想要正确的列索引

然后现在:

print(newdf)

是:

       date  output  price  price2
0 20130101 39.5 25.0 23
1 20130101 39.5 25.0 56
2 20130105 45.0 23.5 45
3 20130105 67.0 27.0 67
4 20130101 33.0 40.0 33
5 20130108 2.0 8.0 2

关于具有两个条件的python groupby并计算平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52271267/

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