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)。我该怎么做呢?
答案 0 :(得分:5)
在您的情况下,groupby
与all
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)
我们可以将all
与groupby
一起使用:
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']