Pandas:从列列表中检查 df 中是否存在列

Raj*_*Raj 4 python pandas

这里的目标是找到 df 中不存在的列并用空值创建它们。

我有一个列名列表,如下所示:

column_list = ('column_1', 'column_2', 'column_3')
Run Code Online (Sandbox Code Playgroud)

当我尝试检查该列是否存在时,它仅对存在的列给出 True,对于那些缺失的列不给出 False。

for column in column_list:
    print df.columns.isin(column_list).any()
Run Code Online (Sandbox Code Playgroud)

在 PySpark 中,我可以使用以下方法实现这一点:

for column in column_list:
        if not column in df.columns:
            df = df.withColumn(column, lit(''))
Run Code Online (Sandbox Code Playgroud)

如何使用 Pandas 实现相同的目标?

raf*_*elc 9

使用np.isinassign解包kwargs

s = np.isin(column_list, df.columns)
df = df.assign(**{k:None for k in np.array(column_list)[~s]})
Run Code Online (Sandbox Code Playgroud)


Pan*_*shi 8

这是我的方法:

import numpy as np

for col in column_list:
    if col not in df.columns:
        df[col] = np.nan
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果由于某种原因您反对为此导入 numpy,则 numpy 可用作 `pd.np` (2认同)