首页 > 解决方案 > 分别修改过滤器中的特定行熊猫

问题描述

我想单独修改过滤器中的行,我的想法是:

df = pd.DataFrame({'a': [2, 6, 3, 6], 'b': [3, 4, 5, 8], 'c': [1, 5, 6, 8]})
mask = (df['a']==6)
df.loc[mask].loc[0,'c']=4
df.loc[mask].loc[1,'c']=5    

这样做时,我会得到 SettingWithCopyWarning:

A value is trying to be set on a copy of a slice from a DataFrame

但由于我已经使用 .loc ,我不知道如何解决这个问题。或者有没有做我想做的事?

谢谢

更新

原来的df看起来像

   a  b  c
0  2  3  1
1  6  4  5
2  3  5  6
3  6  8  8

在我这样做之后

mask = (df['a']==6)
df.loc[mask].loc[0,'c']=4
df.loc[mask].loc[1,'c']=5

我的愿望输出是

   a  b  c
0  2  3  1
1  6  4  4
2  3  5  6
3  6  8  5

亨利的代码有效,但我还是想知道有没有办法一一修改值。

df.loc[(df['a'] == 6), 'c'] = [4, 5]

标签: pythonpandasdataframe

解决方案


推荐阅读