2017-06-14 50 views
2

條件有這樣的數據幀分組通過就像這樣:與凡在熊貓

pauses['dif_pause'] = pauses['pause_end'] - pauses['pause_start'] 
pauses['dif_pause'].astype(dt.timedelta).map(lambda x: np.nan if pd.isnull(x) else x.days) 

pauses_df=pauses.groupby(["subscription_id"])["dif_pause"].mean().reset_index(name="avg_pause") 

我想在GROUPBY部分包括檢查是否pause_end> pause_start(一些equialent WHERE子句中的SQL)。如何做到這一點?

謝謝。

回答

2

看來你需要queryboolean indexing第一過濾:

pauses.query("pause_end > pause_start") 
     .groupby(["subscription_id"])["dif_pause"].mean().reset_index(name="avg_pause") 

pauses[pauses["pause_end"] > pauses["pause_start"]] 
     .groupby(["subscription_id"])["dif_pause"].mean().reset_index(name="avg_pause")