Python Pandas选择特定列包含零的组

时间:2016-02-16 23:34:46

标签: python pandas

我正在使用Python Pandas开展一个小项目,我遇到了以下问题:

我有一个表,其中列A包含多个且可能非唯一值,第二列B的值可能为零。现在,我想按照A列中的值对DataFrame中的所有行进行分组,然后仅对#34; keep"或"选择" B列中包含一个或多个零的组。

例如,来自如下所示的DataFrame:

Column A    Column B
--------    --------
b           12
c           56
f           0
b           456
b           334
f           10

我只对列A = f:

的所有行(组)感兴趣
Column A    Column B
--------    --------
f           0
f           10

我知道如何使用循环和迭代组来实现这一点,但我正在寻找一个简单且相当快的代码,因为我使用的DataFrame可能会变得非常庞大。

我目前的做法是这样的:

df.groupby("A").filter(lambda x: 0 in x["B"].values)

显然我是Python Pandas的新手,我希望得到你的帮助!

提前谢谢!

1 个答案:

答案 0 :(得分:1)

一种方法是获取列B的所有值,其中列B为零,然后在此过滤集上进行分组。

groups = df[df['Column B'] == 0]['Column A'].unique()
>>> df[df['Column A'].isin(groups)]
  Column A  Column B
2        f         0
5        f        10