在“熊猫”列中将值分组在一起,然后在另一列中过滤值

时间:2019-07-03 14:34:22

标签: pandas python-3.6

Pandas Dataframe看起来像这样:

Col1 Col2

A    1
A    1
A    1
B    0
B    0
B    1
B    1
B    1
C    1
C    1
C    1
C    1

我想将所有Col1分组在一起,然后检查Col2以查看该组(即A)的 all 值是否为1。在此示例中,所需的输出将是是:

[A, C]

(因为只有A和C的所有值都设置为1)。我该怎么做呢?

3 个答案:

答案 0 :(得分:5)

在您的情况下,groupbyall

df.groupby('Col1').Col2.all().loc[lambda x : x ].index.tolist()
Out[350]: ['A', 'C']

或者没有groupby

df.loc[~df.Col1.isin(df.Col1[df.Col2.eq(0)]),'Col1'].unique()
Out[352]: array(['A', 'C'], dtype=object)

从评论

cs95:df.loc[df['Col2'].astype(bool).groupby(df['Col1']).transform('all'), 'Col1'].unique()

答案 1 :(得分:4)

我们可以将allgroupby一起使用:

out = df.Col2.groupby(df.Col1).all()
out.index[out].tolist()
# ['A', 'C']

答案 2 :(得分:2)

理解力

[k for k, d in df.Col2.eq(1).groupby(df.Col1) if d.all()]

['A', 'C']