python - 如何根据两列过滤时间序列熊猫数据框?
问题描述
所以我有一个时间序列数据框,其中一列中包含患者 ID,另一列中包含年份(1-3)。我想使用 pandas 做的是,对于每个唯一的患者 ID,只保留包含所有 1-3 年条目的行。
在
ID Year
111 1
111 2
111 3
222 1
222 2
333 1
333 2
333 3
出去
ID Year
111 1
111 2
111 3
333 1
333 2
333 3
解决方案
它可以像这样在一行中完成:
df = pd.DataFrame({
"ID": [111, 111, 111, 222, 222, 333, 333, 333],
"Year": [1, 2, 3, 1, 2, 1, 2, 3]})
# filter unique IDs that doesn't contain [1, 2, 3]
df = df.groupby('ID').filter(lambda g: (sorted(set(g["Year"].values)) == [1,2,3]))
print(df)
# ID Year
#0 111 1
#1 111 2
#2 111 3
#5 333 1
#6 333 2
#7 333 3
推荐阅读
- spring-security - PreAuthenticatedAuthenticationProvider UserDetailsService 如何捕获正确的异常
- powerbi - 用于检查 Treemap 中多个选定值的 DAX 代码
- java - 如何在没有实体(因此没有存储库)的情况下调用 Spring Data JPA 中的存储过程?
- python - 比较嵌套列表的相似度
- webmin - webmin中的utf 8
- python - Scipy 从文本文件构建网络图
- excel - Deleting values between first two parentheses
- node.js - NodeJS Undefined TypeError,我哪里出错了?
- asp.net-mvc - Automapper 返回代理对象而不是字符串
- c# - 使用相同的 uri 参数传递,得到两个不同的结果