python - Pandas :按多个条件过滤组?

标签 python pandas filter multiple-conditions

我有一个如下所示的数据框:

df = pd.DataFrame([
  {'id': 123, 'date': '2016-01-01', 'is_local': True },
  {'id': 123, 'date': '2017-01-01', 'is_local': False },
  {'id': 124, 'date': '2016-01-01', 'is_local': True },
  {'id': 124, 'date': '2017-01-01', 'is_local': True }
])
df.date = df.date.astype('datetime64[ns]')

我想获取所有 ID 的列表,其中 is_local 在 2016 年初为 True,但在 2017 年初为 False。我首先按 ID 分组:

gp = df.groupby('id')

然后我试过这只是为了按这些条件中的第二个进行过滤(作为一种入门方式),但它返回了所有组:

gp.apply(lambda x: ~x.is_local & (x.date > '2016-12-31'))

如何按照我需要的方式进行过滤?

最佳答案

d1 = df.set_index(['id', 'date']).is_local.unstack()
d1.index[d1['2016-01-01'] & ~d1['2017-01-01']].tolist()

[123]

关于python - Pandas :按多个条件过滤组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43800643/

相关文章:

python - Whitenoise 在执行 collectstatic 时在 jquery-ui.css 上给出错误

python - 没有循环的数据集的特定组

python - Pylons:不小心输入了 'setup.py install' ,我该如何修复?

python - 解析 Pandas 数据框

django - 如何在 Django 中过滤连接模型?

Python - 如何检查页面中不应存在的元素

python - 如何高效地将混合类型的 pandas DataFrame 加载到 Oracle DB 中

python - 使用 glob 时添加修改文件时间戳列

javascript - Angularjs 根据 id 过滤嵌套 JSON 数据

sql-server - SQL 删除几乎重复的行