python - Pandas 数据框根据嵌套 if 条件设置列值

标签 python pandas

我的数据框中有 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/

相关文章:

python - 按一定的优先顺序将 pandas 列组合到新列中

python - pip install pandas 导致错误(Python3.8、Pycharm、Apple Silicon)

Python wheel 包 Linux vs windows

python - matplotlib 图例符号和文本未对齐

python - self.Bind 上的 wxPython 方法 "takes 1 positional argument but 2 were given"

python - 替换 Pandas 数据框中分类变量的值

python - Pandas :沿着多索引的第一层切片

python - 使用其他列有条件地更新 Pandas DataFrame 列

python - TinyMCE 弹出窗口在 Django 开发服务器中不起作用

python - 从 numpy 求和二维数组创建加权 igraph 图作为邻接矩阵