根据其他字段的值更改字段的值

时间:2021-04-08 11:00:42

标签: python-3.x pandas

我有一个名为“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]

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')