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

问题描述

我有一个这样的数据框

df_a = pd.DataFrame({'a': [2,4,5,6,12],'b': [3,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,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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...