一个与另一个的平均值或 python 中的平均值
average of one wrt another or averageifs in python
我有一个显示的 pandas df 我想计算 DC 按品牌的平均利率 列,这类似于 excel 中的 averageif ,
我尝试过像 groupby mean() 这样的方法,但没有给出正确的结果
您的问题不清楚,但您可能正在寻找:
df.groupby(['DC','Brand'])['Rate'].mean()
AVERAGEIF
in excel returns 与原始数据大小相同的列。所以我认为您正在寻找 pandas.transform()
:
# Sample DF
Brand Rate
0 A 45
1 B 100
2 C 28
3 A 92
4 B 2
5 C 79
6 A 48
7 B 97
8 C 72
9 D 14
10 D 16
11 D 64
12 E 85
13 E 22
结果:
df['Avg Rate by Brand'] = df.groupby('Brand')['Rate'].transform('mean')
print(df)
Brand Rate Avg Rate by Brand
0 A 45 61.666667
1 B 100 66.333333
2 C 28 59.666667
3 A 92 61.666667
4 B 2 66.333333
5 C 79 59.666667
6 A 48 61.666667
7 B 97 66.333333
8 C 72 59.666667
9 D 14 31.333333
10 D 16 31.333333
11 D 64 31.333333
12 E 85 53.500000
13 E 22 53.500000
我有一个显示的 pandas df 我想计算 DC 按品牌的平均利率 列,这类似于 excel 中的 averageif , 我尝试过像 groupby mean() 这样的方法,但没有给出正确的结果
您的问题不清楚,但您可能正在寻找:
df.groupby(['DC','Brand'])['Rate'].mean()
AVERAGEIF
in excel returns 与原始数据大小相同的列。所以我认为您正在寻找 pandas.transform()
:
# Sample DF
Brand Rate
0 A 45
1 B 100
2 C 28
3 A 92
4 B 2
5 C 79
6 A 48
7 B 97
8 C 72
9 D 14
10 D 16
11 D 64
12 E 85
13 E 22
结果:
df['Avg Rate by Brand'] = df.groupby('Brand')['Rate'].transform('mean')
print(df)
Brand Rate Avg Rate by Brand
0 A 45 61.666667
1 B 100 66.333333
2 C 28 59.666667
3 A 92 61.666667
4 B 2 66.333333
5 C 79 59.666667
6 A 48 61.666667
7 B 97 66.333333
8 C 72 59.666667
9 D 14 31.333333
10 D 16 31.333333
11 D 64 31.333333
12 E 85 53.500000
13 E 22 53.500000