pandas dataframe过滤器为所有行返回True。怎么样?

时间:2017-09-24 07:36:26

标签: python pandas pandas-groupby

嗨我有一个过滤器'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'})

1 个答案:

答案 0 :(得分:3)

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

#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))