我有一個看起來像這樣的數據幀:熊貓:過濾組由多個條件組成?
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]')
我想要得到這is_local
是在2016年開始真正的所有ID的列表,但假以2017年我開始」 VE通過分組開始由ID:
gp = df.groupby('id')
然後,我已經試過這只是由這些條件的第二(作爲入門的方式)來過濾,但它返回所有組:
gp.apply(lambda x: ~x.is_local & (x.date > '2016-12-31'))
如何以我需要的方式過濾?
謝謝 - 我將如何使用它來獲取所有2016年初的'has_local'爲True且2017年爲False的行? – Richard
我只能想到一個骯髒的解決方案,你添加多個條件,並將它們連接到另一個。相應地編輯我的答案。 – Mechanic
我還編輯了我的答案與另一個條件分別限制到2016年和2017年 – Mechanic