从熊猫数据框中过滤元素以进行统计分析

问题描述 投票:0回答:1

我对熊猫还很陌生,我只想检查是否可以进行以下操作:

我有一个看起来像这样的数据框:

Date         Hour   id    id_a   id_b   id_c   id_d   id_e
2019-12-05   05     123   True   False  True   False  False
2019-12-05   05     124   False  False  True   False  True
2019-12-05   05     125   True   False  False  False  False
...

在excel中,我可以过滤值以仅显示TrueFalse值,这将更改所有视图并仅显示右列。我可以过滤多个列并获得所需的视图。例如,id_aid_b设置为Trueid_e设置为False,其他列未过滤或不接受TrueFalse值。例如,将id_a设置为True进行过滤会删除第二个条目:

Date         Hour   id    id_a   id_b   id_c   id_d   id_e
2019-12-05   05     123   True   False  True   False  False
2019-12-05   05     125   True   False  False  False  False
...

[如果有可能使用带有pandas函数的pandas数据框或简单的python或任何库来获得以下内容:

a)如果将id_a,id_b设置为false且id_c和id_d接受任何值且id_e为true,则返回存在的数据帧的长度

b)返回TrueFalse语句的任意组合。

谢谢您的建议。

python pandas dataframe
1个回答
0
投票
仅第一个过滤器boolean列:

df1 = df.select_dtypes(bool)

或按位置列:

df1 = df.iloc[:, 3:] print (df1) id_a id_b id_c id_d id_e 0 True False True False False 1 False False True False True 2 True False False False False

然后是链式口罩:

m = ~df['id_a'] & ~df['id_b'] & df['id_e'] print (m) 0 False 1 True 2 False dtype: bool

对于计数True,请使用sum

print (m.sum()) 1

如果要计算True s和False s:

df2 = df1.apply(pd.value_counts).fillna(0).astype(int) print (df2) id_a id_b id_c id_d id_e False 1 3 1 3 2 True 2 0 2 0 1

并且还要在计数之前按某些列数据进行过滤:

mask = df['id_a'] df3 = df1[mask].apply(pd.value_counts).fillna(0).astype(int) print (df3) id_a id_b id_c id_d id_e False 0 2 1 2 2 True 2 0 1 0 0

© www.soinside.com 2019 - 2024. All rights reserved.