当存在 NaN 值时,无法更新 Pandas 数据帧中的值



假设我这里有代码

df = pd.DataFrame([[10,20], [30, 40], [50, 60]],
columns=['max_speed', 'shield'])

它输出

max_speed  shield
0         10      20
1         30      40
2         50      60

在这里更改值,我可以很容易地进行

df.iloc[1]['shield'] = 5 

输出

max_speed  shield
0         10      20
1         30       5
2         50      60

但是,如果数据帧中存在NaN值,我就不能再更改这些值了。

df = pd.DataFrame([[10], [30, 40], [50, 60]],
columns=['max_speed', 'shield'])
max_speed  shield
0         10     NaN
1         30    40.0
2         50    60.0
df.iloc[1]['shield'] = 5 
max_speed  shield
0         10     NaN
1         30    40.0
2         50    60.0

我知道我可以使用fillna((和其他方法,但我想知道在这种特殊情况下我能做什么。我想用下一行的值来填充更大数据集的NaN值,我认为这些值对我没有帮助,例如[0]['sfield']=40

问题在于链式分配。请在此处阅读更多信息。

为了避免这种情况,只需将链式操作放入单个操作中,如:

df.loc[1, 'shield'] = 5 

最新更新