我有一个名为“qtm”的数据框,如下所示:
姓名 | 实力 | 弱点 |
---|---|---|
战神 | NaN | 花 |
乔 | 打孔 | 糖果 |
战神 | 速度 | 时间 |
我想要与以下 SQL 代码等效的 Python 代码:
UPDATE qtm
SET Strength = 'Fire'
WHERE Name = 'Voltron' AND Strength = 'NaN'
所以我可以得到以下数据帧:
姓名 | 实力 | 弱点 |
---|---|---|
战神 | 火 | 花 |
乔 | 打孔 | 糖果 |
战神 | 速度 | 时间 |
我尝试了以下方法,但没有用:
qtm.loc[qtm['Name'] == 'Voltron' & qtm['Strength'] == 'NaN', 'Strength']='Fire'
我尝试了以下解决方案,但最终无法使其正常工作:
[https://stackoverflow.com/questions/19226488/change-one-value-based-on-another-value-in-pandas]
&
[https://stackoverflow.com/questions/64980121/change-value-of-a-column-based-on-another-column?noredirect=1&lq=1]
答案 0 :(得分:1)
通过Series.isna
添加带有测试缺失值的括号:
qtm.loc[(qtm['Name'] == 'Voltron') & (qtm['Strength'].isna()), 'Strength']='Fire'
或者使用 Series.fillna
来设置 NaN
的掩码:
#one condition () not necessary
m = qtm['Name'] == 'Voltron'
qtm.loc[m, 'Strength'] = qtm.loc[m, 'Strength'].fillna('Fire')