【问题标题】:pandas dataframe filter to return True for ALL rows. how?pandas 数据框过滤器为所有行返回 True。如何?
【发布时间】:2018-03-05 09:23:51
【问题描述】:

您好,我有一个过滤器“m”集,它足够灵活,可以由我更改。有时,我想按 Car 或 x_acft_body 或任何其他各种字段等进行过滤。有时我想通过注释和取消注释所需的行来返回 所有行。但在不改变后续代码的情况下,在过滤器'm'行之后。

当我不希望应用过滤器时,我如何才能拥有一个对所有行都返回 true 的过滤器?例如1==1 之类的东西,但我知道这不起作用。

我不想设置dfdata.somefield.notnull() 等,因为我不太确定该字段是否始终不为空。我也不想更改后续代码dfdata.groupby.,即没有[m]

# set filter if needed
m = (   1==1 #& return true at all times
#         (dfdata.Car == 'PG') #&
#         (dfdata.x_acft_body == 'N')# &
#         (dfdata.Car.isin(['PG', 'VJ', 'VZ']))
)


dft1 = dfdata[m].groupby(['FLD1']).agg({'FLD2': 'count'})

【问题讨论】:

  • 不能设置m = (True) 来返回所有行吗?
  • 返回 KeyError: True

标签: python pandas pandas-groupby


【解决方案1】:

您可以创建布尔常量并通过它更改最终掩码:

#True for return all rows
m = (dfdata.Car == 'PG') | True

还有:

#False for apply filter
m = (dfdata.Car == 'PG') | False

第一个解决方案:

m = [True] * len(df.index)

m = np.repeat(True, len(df.index))

【讨论】:

  • #False for apply filter m = (dfdata.Car == 'PG') | False m = (dfdata.Car == 'PG') & False 吗?只有这样它才会返回 False 所有行。
  • 是的,没有必要。如果可能 True 或 nothing,False 可以省略。
猜你喜欢
  • 1970-01-01
  • 2019-03-29
  • 1970-01-01
  • 2018-07-26
  • 2018-06-07
  • 1970-01-01
  • 2019-09-15
  • 2021-12-10
  • 1970-01-01
相关资源
最近更新 更多