首页 > 解决方案 > 当存在 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]['shield'] = 40

标签: pythonpandasdataframe

解决方案


问题是链式分配。请在此处阅读更多内容。

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

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

推荐阅读