python - 如果组内的一行满足熊猫中的特定条件,如何选择组的所有行
问题描述
我有一个看起来像这样的数据框
pd.DataFrame({'a': ['cust1', 'cust1', 'cust1', 'cust2', 'cust2', 'cust3', 'cust3', 'cust4', 'cust4'],
'year': [2017, 2018, 2019, 2018, 2019, 2017, 2018, 2018, 2019],
'cond': [True, True, False, True, True, True, True, True, True]})
a year cond
0 cust1 2017 True
1 cust1 2018 True
2 cust1 2019 False
3 cust2 2018 True
4 cust2 2019 True
5 cust3 2017 True
6 cust3 2018 True
7 cust4 2018 True
8 cust4 2019 True
如何选择“a”列中的所有组行,其中“year”= 2019 具有“cond”= True?
结果数据框应如下所示
a year cond
3 cust2 2018 True
4 cust2 2019 True
7 cust4 2018 True
8 cust4 2019 True
逻辑:
组 cust1 的行没有被选为 2019 年 = False
组 cust2 的行被选为 2019 年 = True
组 cust3 的行没有被选为 2019 年 无可用数据
组 cust4 的行被选为 2019 年 = True
解决方案
试试这个,boolean_indexing
+Series.isin
print(
df[df.a.isin(df.loc[df.year.eq(2019) & df.cond, 'a'].unique())]
)
a year cond
3 cust2 2018 True
4 cust2 2019 True
7 cust4 2018 True
8 cust4 2019 True
推荐阅读
- python - 如何绘制通过使用牛顿法评估函数而呈现的多个数据点
- c++ - 如何解决声明错误
- python - 在 Python 中用科学计数法绘制值的表?
- powershell - 如何在powershell中导入csv替换字符并导出保存在blob中的csv
- blockchain - 我应该什么时候构建一个 Substrate 运行时模块而不是一个 Substrate 智能合约?
- javascript - 带大括号的代码和不带大括号的代码之间的区别
- here-api - 公共交通更新间隔和航班起飞时间数据
- azure - Azure Functions 和本地 TCP 服务器
- python - 如何在 python 中使 for 循环更易于理解?
- android - 协程:有没有办法阻止多次执行并通知它们?