gpt4 book ai didi

pandas - 如何基于列内爆( Pandas 的反向 explode )

转载 作者:行者123 更新时间:2023-12-03 16:12:50 24 4
gpt4 key购买 nike

我有一个像下面这样的数据框 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
我想内爆(将 Applicable_days 从多行组合成单行,如下所示)并获得每个 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'})
但是如何在执行此聚合时加入 APPLICABLE_DAYS ?

最佳答案

如果您想要 explode 的“相反”,那么这意味着将其放入解决方案 #1 中的列表中。您还可以在解决方案#2 中作为字符串加入:
使用 lambda x: x.tolist()'APPLICABLE_DAYS'您的 .agg 中的列分组功能:

df = (df.groupby(['NETWORK','config_id'])
.agg({'APPLICABLE_DAYS': lambda x: x.tolist(),'Case':'mean','Delivery':'mean'})
.rename({'Case' : 'Avg_Cases','Delivery' : 'Avg_Delivery'},axis=1)
.reset_index())
df
Out[1]:
NETWORK config_id APPLICABLE_DAYS Avg_Cases Avg_Delivery
0 Grocery 5399 [SUN, MON, TUE, WED] 25 2.5

使用 lambda x: ",".join(x)'APPLICABLE_DAYS'您的 .agg 中的列分组功能:
 df = (df.groupby(['NETWORK','config_id'])
.agg({'APPLICABLE_DAYS': lambda x: ",".join(x),'Case':'mean','Delivery':'mean'})
.rename({'Case' : 'Avg_Cases','Delivery' : 'Avg_Delivery'},axis=1)
.reset_index())
df
Out[1]:
NETWORK config_id APPLICABLE_DAYS Avg_Cases Avg_Delivery
0 Grocery 5399 SUN,MON,TUE,WED 25 2.5
如果您正在寻找 sum ,那么你可以更改 meansumCasesDelivery列。

关于pandas - 如何基于列内爆( Pandas 的反向 explode ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64235312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com