【发布时间】:2016-05-28 11:23:01
【问题描述】:
我正在使用 Python Pandas 进行一个小项目,但遇到以下问题:
我有一个表,其中 A 列包含多个可能非唯一的值,而第二列 B 的值可能为零。现在我想按 A 列中的值对 DataFrame 中的所有行进行分组,然后只“保留”或“选择”在 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 的新手,希望能得到您的帮助!
提前谢谢你!
【问题讨论】:
-
如何使用
query,df.query("columnA == 'f'").query("columnB >= 0") -
@titipat 谢谢你的回复。在您的解决方案中,我之前必须知道 A 列中的所有可能值,并以某种方式使用循环对其进行迭代,对吗?
-
是的,没错。如果您想遍历,
groupby可能比我的解决方案更好。