【问题标题】:When to utilize pandas .filter() over other subsetting methods?何时使用 pandas .filter() 而不是其他子集方法?
【发布时间】:2021-11-09 22:13:09
【问题描述】:

我一直在研究过滤和子集 pandas DataFrame 的不同方法,并遇到了 pandas.DataFrame.filter() 方法。但是,我无法弄清楚为什么人们会在另一种过滤方法(loc、iloc、逻辑运算符、str.contains()、.query() 等)上使用它。任何人都可以提供一个示例,说明何时使用 .filter() 而不是替代方法?

【问题讨论】:

  • 在 pandas api 中有很多方法可以做同样的事情。最近,维护人员一直在积极尝试弃用重复方法以试图简化库(即删除 lookup 并且目前弃用 sum、mean、any 等的 level 参数)。您当然可以像df.loc[:, df.columns.str.contains('foo')] 这样子集,但为了清楚和简洁,df.filter(like='foo') 更好一点 IMO
  • ^ 更不用说filter 方法有很多额外的错误处理,以防你的列标签不是字符串

标签: python pandas dataframe filter


【解决方案1】:

filter 应用于索引或列标签,而不是值。

querycontains 等相比,它们用于根据内容过滤DataFrame

例如,如果您只想保留以“地址”结尾的列,则可以使用df.filter(regex='address$')

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    相关资源
    最近更新 更多