如何将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/

10-11 04:11
查看更多