【发布时间】:2017-10-03 16:21:27
【问题描述】:
我有一个如下所示的数据框:
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'))
如何按照我需要的方式进行过滤?
【问题讨论】:
标签: python pandas filter multiple-conditions