如何将b和c的平均值添加到数据框中?我尝试了合并,但似乎不起作用。所以我想将额外的两列b_mean和c_mean与df.groupBy('date').mean()
的结果一起添加到我的数据框中
数据框
a b c date
0 2 3 5 1
1 5 9 1 1
2 3 7 1 1
我有以下代码
import pandas as pd
a = [{'date': 1,'a':2, 'b':3, 'c':5}, {'date':1, 'a':5, 'b':9, 'c':1}, {'date':1, 'a':3, 'b':7, 'c':1}]
df = pd.DataFrame(a)
x = df.groupby('date').mean()
编辑:
所需的输出如下
df.groupby('date').mean()
返回: a b c
date
1 3.333333 6.333333 2.333333
我想要的结果将是以下数据框
a b c date a_mean b_mean
0 2 3 5 1 3.3333 6.3333
1 5 9 1 1 3.3333 6.3333
2 3 7 1 1 3.3333 6.3333
最佳答案
正如@ayhan所提到的,您可以为此使用pd.groupby.transform()。转换就像Apply一样,但是它使用与原始数据帧相同的索引,而不是分组的列中的唯一值。
df['a_mean'] = df.groupby('date')['a'].transform('mean')
df['b_mean'] = df.groupby('date')['b'].transform('mean')
>>> df
a b c date b_mean a_mean
0 2 3 5 1 6.333333 3.333333
1 5 9 1 1 6.333333 3.333333
2 3 7 1 1 6.333333 3.333333
关于Python:如何将.mean的特定列添加到数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43035093/