我有一个数据框,看起来像这样:
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]')
我希望获得一个列表,其中包含在2016年初为True但在2017年初为False的所有ID。 我已经通过ID进行了分组:
gp = df.groupby('id')
我尝试了根据第二个条件进行过滤(作为开始的方式),但它返回了所有的组:
gp.apply(lambda x: ~x.is_local & (x.date > '2016-12-31'))
我该如何按照需要进行筛选?
has_local
为True且在2017年为False的行? - Richard