私は以下のようなデータフレームDFを持っています
NETWORK config_id APPLICABLE_DAYS Case Delivery
0 Grocery 5399 Sun 10 1
1 Grocery 5399 MON 20 2
2 Grocery 5399 TUE 30 3
3 Grocery 5399 WED 40 4
_
Inplode(複数行から複数の行から下記の単一行に組み合わせる)とconfig_idごとに平均的な場合と配信を取得したいです。
NETWORK config_id APPLICABLE_DAYS Avg_Cases Avg_Delivery
0 Grocery 5399 Sun,MON,TUE,WED 90 10
_
ネットワーク上のGroupByを使用して、config_id私は以下のようにavg_casesとavg_deliveryを取得できます。
df.groupby(['network','config_id']).agg({'case':'mean','delivery':'mean'})
_
しかし、この集約を実行しながらappliable_daysに参加できる方法
あなたの結果は平均よりも合計のように見えます。以下の解決策は 名前付き集合 :
df.groupby(["NETWORK", "config_id"]).agg(
APPLICABLE_DAYS=("APPLICABLE_DAYS", ",".join),
Total_Cases=("Case", "sum"),
Total_Delivery=("Delivery", "sum"),
)
APPLICABLE_DAYS Total_Cases Total_Delivery
NETWORK config_id
Grocery 5399 Sun,MON,TUE,WED 100 10
_
それが意味がある場合は、「合計」を「意味」に変更できます。
df.groupby(["NETWORK", "config_id"]).agg(
APPLICABLE_DAYS=("APPLICABLE_DAYS", ",".join),
Avg_Cases=("Case", "mean"),
Avg_Delivery=("Delivery", "mean"),
)
APPLICABLE_DAYS Avg_Cases Avg_Delivery
NETWORK config_id
Grocery 5399 Sun,MON,TUE,WED 25 2.5
_