【问题标题】:Pandas: Check if column exists in df from a list of columns熊猫:从列列表中检查列是否存在于df中
【发布时间】:2019-03-26 20:38:24
【问题描述】:

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

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

column_list = ('column_1', 'column_2', 'column_3')

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

for column in column_list:
    print df.columns.isin(column_list).any()

在 PySpark 中,我可以使用以下方法实现此目的:

for column in column_list:
        if not column in df.columns:
            df = df.withColumn(column, lit(''))

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

【问题讨论】:

  • 你永远不会在你的 for 循环中使用你的 column 变量。你重复做同样的操作..基本上检查df中是否有any列在column_list

标签: python pandas


【解决方案1】:

这是我的方法:

import numpy as np

for col in column_list:
    if col not in df.columns:
        df[col] = np.nan

【讨论】:

  • 请注意,如果出于某种原因您不愿意为此导入 numpy,则 numpy 可用作 pd.np
  • 谢谢。我试图避免使用 Numpy,因为我想在 AWS Lambda 中部署它并尝试尽可能少地导入库。了解这一点非常有用。
【解决方案2】:

使用np.isinassign并解包kwargs

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

【讨论】:

    猜你喜欢
    • 2021-03-28
    • 2021-09-02
    • 2020-06-12
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多