假设我这里有代码
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