考える次の表のパンダを使用した場合、複雑な集計関数を組み合わせる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...
は、私の目的は、計算することである:1日あたり
- 合計
- 1日あたりの活性成分の合計数 日この1あたり
合計は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')
私の質問どのように私は2つを組み合わせることができます。 concat
使用:
pd.concat([overall_sum_per_day, active_sum_per_day], axis=1)
私は私の目的を達成することができます。しかし、私は一度にそれを達成し、2つの集計を一度に適用することに失敗します。出来ますか?このcommentを参照してください。
あなたのグループウェアをクリーンアップして機能を適用する方法を確認するには、私の答えをチェックしてください。 –