認爲以下表結合複雜的聚合功能GROUPBY
np.random.seed(42)
ix = pd.date_range('2017-01-01', '2017-01-15', freq='60s')
df = pd.DataFrame(
{
'val': np.random.random(size=ix.shape[0]),
'active': np.random.choice([0,1], size=ix.shape[0])
},
index=ix
)
df.sample(10)
產生的:
active val
2017-01-02 06:05:00 1 0.774654
2017-01-04 08:15:00 1 0.934796
2017-01-13 01:02:00 0 0.792351...
我的目標是計算:每天
- 總和
- 每天活動次數總和 每天這一個
總和爲straightforwards:每活躍的一天
gb = df.groupby(pd.to_datetime(df.index.date))
overall_sum_per_day = gb['val'].sum().rename('overall')
琛這是一個有點麻煩(見this)。
active_sum_per_day = gb.agg(lambda x: x[x.active==1]['val'].sum())['val'].rename('active')
我的問題我怎樣才能將二者結合起來。使用concat
:
pd.concat([overall_sum_per_day, active_sum_per_day], axis=1)
我可以實現我的目標。但我無法一次實現,並一次應用這兩個聚合。可能嗎?看到這個comment。
檢查我的答案,看看如何清理你的groupby和應用函數。 –