问题描述
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