pandas 数据框过滤器为所有行返回 True。如何?

ihi*_*wer 8 python pandas pandas-groupby

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

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

我不想设置dfdata.somefield.notnull()等等,因为我不太确定这个字段是否总是不为空。我也不想将后续代码更改dfdata.groupby. ie 没有[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'})
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 10

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

#True for return all rows
m = (dfdata.Car == 'PG') | True
Run Code Online (Sandbox Code Playgroud)

和:

#False for apply filter
m = (dfdata.Car == 'PG') | False
Run Code Online (Sandbox Code Playgroud)

第一种解决方案:

m = [True] * len(df.index)
Run Code Online (Sandbox Code Playgroud)
m = np.repeat(True, len(df.index))
Run Code Online (Sandbox Code Playgroud)