如何将数据框均值分配给特定的数据框行?

How to assigne a dataframe mean to specific rows of dataframe?

我有这样一个数据框

df_a = pd.DataFrame({'a': [2, 4, 5, 6, 12],
                 'b': [3, 5, 7, 9, 15]})

    Out[112]: 
    a   b
0   2   3
1   4   5
2   5   7
3   6   9
4  12  15

意思是

df_a.mean()

Out[118]: 
a   5.800
b   7.800
dtype: float64

我想要这个;

df_a[df_a.index.isin([3, 4])] = df.mean()

但是我遇到了一个错误。我如何实现这一目标? 我在这里举了一个例子。我需要对正在处理的数据进行大量更改的观察结果。我将它们的索引值保存在列表中

如果要覆盖列表中行的值,可以使用 iloc

df_a = pd.DataFrame({'a': [2, 4, 5, 6, 12], 'b': [3, 5, 7, 9, 15]})

idx_list = [3, 4]
df_a.iloc[idx_list,:] = df_a.mean()

输出

     a    b
0  2.0  3.0
1  4.0  5.0
2  5.0  7.0
3  5.8  7.8
4  5.8  7.8

编辑

如果您使用的是 pandas 的旧版本并且看到 NaN 而不是想要的值,您可以使用 for 循环

df_a_mean = df_a.mean()
for i in idx_list:
    df_a.iloc[i,:] = df_a_mean