我正在使用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的新手,我希望得到你的帮助!
提前谢谢!
答案 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