我的数据框中有 4 列,希望根据以下条件更改第 2 列中的所有值:
if pd.isnull(df['COL2']) or df['COL2'] == "SOME_NAME":
if pd.isnull(df['COL3']) == False:
df['COL2'] = df['COL3']
else:
df['COL2'] = "DEFAULT"
所以基本上如果 col2 为空或有某个特定名称,则将其替换为 col3 如果 col3 不为空,否则替换为默认值
我迭代了 df 但匹配并未替换所有值。我有一些行的 col2 值仍设置为“SOME_NAME”。有没有简单的方法可以做到这一点?
最佳答案
使用 loc
进行赋值,仅更改满足条件的行。
i = df['COL2'].isnull() | df['COL2'].eq('SOME_NAME')
j = df.loc[i, 'COL3']
df.loc[i, 'COL2'] = j.where(j.notnull(), 'DEFAULT')
关于python - Pandas 数据框根据嵌套 if 条件设置列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48628005/