【问题标题】:Combine mutually exclusive arguments in filter condition在过滤条件中组合互斥参数
【发布时间】:2022-01-31 17:39:19
【问题描述】:

我有一个大于 100 列的大型 Pandas DataFrame,我想选择列名中出现子字符串 einkst_l 的所有列。 另外,我想选择nameyear这两列。

到目前为止,我只能创建两个新的数据框:

e = 'einkst_l'
df_1 = df.filter(like = e, axis=1).reset_index(drop=True)
df_2 = df.filter(items = ['name', 'year'], axis=1).reset_index(drop=True)

我想一次选择所有列,但很遗憾,“赞”和“项目”不能在一个语句中组合。 如何一次选择名称 + 年份 + 包含指定子字符串的所有列?

【问题讨论】:

    标签: pandas filter


    【解决方案1】:

    这比较模糊,但您可以使用正则表达式匹配。

    df[df.columns[df.columns.str.contains('einkst_l|name|year')]]
    

    另外,可以使用 ^ 或 $ 来精确匹配姓名和年份。

    【讨论】:

      【解决方案2】:

      尝试不使用filter 使用str 访问器:

      替换:

      • likecontains
      • itemsisin
      out = df[df.columns[df.columns.str.contains('einkst_l')
                          | df.columns.isin(['name', 'year'])]]
      

      【讨论】:

        【解决方案3】:

        您可以尝试“嵌套过滤”之类的方法:

        df.filter(like = e, axis=1).filter(items = ['name', 'jahr'], axis=1)
        

        【讨论】:

        • 很遗憾,它不起作用。它只保留索引。
        猜你喜欢
        • 1970-01-01
        • 2018-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-02
        • 2018-11-25
        • 2014-01-18
        相关资源
        最近更新 更多