第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何基于列進行內爆(pandas 爆炸的反向)

如何基于列進行內爆(pandas 爆炸的反向)

收到一只叮咚 2023-10-11 20:02:09
我有一個如下所示的數(shù)據(jù)框 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使用網(wǎng)絡上的 groupby,config_id 我可以獲得 avg_cases 和 avg_delivery,如下所示。df.groupby(['network','config_id']).agg({'case':'mean','delivery':'mean'})但是,在執(zhí)行此聚合時,我如何才能加入 APPLICABLE_DAYS 呢?
查看完整描述

2 回答

?
BIG陽

TA貢獻1859條經(jīng)驗 獲得超6個贊

如果您想要爆炸的“相反”,那么這意味著將其放入解決方案#1 中的列表中。您還可以在解決方案 #2 中作為字符串加入:


用于groupby 函數(shù)中的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

用于groupby 函數(shù)中的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,那么您可以將和列更改mean為。sumCasesDelivery


查看完整回答
反對 回復 2023-10-11
?
守候你守候我

TA貢獻1802條經(jīng)驗 獲得超10個贊

你的結果看起來更像是一個總和,而不是平均值;下面的解決方案使用命名聚合:


? ? 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

如果是平均值,那么您可以將 'sum' 更改為 'mean' :


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


查看完整回答
反對 回復 2023-10-11
  • 2 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號