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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

pandas Groupby 求和并連接

pandas Groupby 求和并連接

慕虎7371278 2023-03-30 16:21:16
我有一個(gè)數(shù)據(jù)框如下+-----------+----------+-----+| InvoiceNo | ItemCode | Qty |+-----------+----------+-----+|  Inv-001  |     c    |  1  |+-----------+----------+-----+|  Inv-001  |     b    |  2  |+-----------+----------+-----+|  Inv-001  |     a    |  1  |+-----------+----------+-----+|  Inv-002  |     a    |  3  |+-----------+----------+-----+|  Inv-002  |     b    |  1  |+-----------+----------+-----+|  Inv-002  |     c    |  1  |+-----------+----------+-----+|  Inv-002  |     d    |  4  |+-----------+----------+-----+|  Inv-002  |     a    |  1  |+-----------+----------+-----+|  Inv-003  |     e    |  1  |+-----------+----------+-----+|  Inv-003  |     b    |  2  |+-----------+----------+-----+我想計(jì)算每個(gè)單獨(dú)的InvoiceNo明智項(xiàng)目組合。即每個(gè)的總和ItemCode。排序并連接到一個(gè)字符串。注意:在Inv-002產(chǎn)品中a有 2 行。我想要/需要的輸出如下+-----------+--------------------+| InvoiceNo |   Desired result   |+-----------+--------------------+|  Inv-001  |    a-1, b-2, c-1   |+-----------+--------------------+|  Inv-002  | a-4, b-1, c-1, d-4 |+-----------+--------------------+|  Inv-003  |      b-2, e-1      |+-----------+--------------------+到目前為止我已經(jīng)寫(xiě)了下面的代碼#load datadf = pd.read_excel('data.xlsx')#groupby and sumg = df.groupby(['InvoiceNo','ItemCode']).sum()# Codes to convert the MultiIndex to a regualr dataframeg = g.unstack(fill_value=0)g.reset_index(drop=True,inplace=True)g = g.droplevel(level=0, axis=1).fillna(0)#calculationg.dot(g.columns+',').str[:-1]下面是我得到的結(jié)果。所有項(xiàng)目分開(kāi)。+---+---------------------+| 0 |       a,b,b,c       |+---+---------------------+| 1 | a,a,a,a,b,c,d,d,d,d |+---+---------------------+| 2 |        b,b,e        |+---+---------------------+請(qǐng)指導(dǎo)我解決這個(gè)問(wèn)題。
查看完整描述

2 回答

?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊

groupby兩次。第一個(gè)獲得每個(gè)的總和['InvoiceNo', 'ItemCode']。然后我們將代碼和類別與“-”連接在一起,并對(duì)發(fā)票進(jìn)行分組以創(chuàng)建完整的字符串。


df1 = df.groupby(['InvoiceNo', 'ItemCode'])['Qty'].sum().reset_index('ItemCode')


df1 = df1['ItemCode'].str.cat(df1['Qty'].astype(str), '-').groupby(level=0).agg(', '.join)


#InvoiceNo

#Inv-001         a-1, b-2, c-1

#Inv-002    a-4, b-1, c-1, d-4

#Inv-003              b-2, e-1

#Name: ItemCode, dtype: object

你會(huì)注意到我不需要整理任何東西。這是因?yàn)間roupby默認(rèn)情況下對(duì)分組鍵進(jìn)行排序,所以在第一行之后系列保證按 排序['InvoiceNo', 'ItemCode'],這是我們之前想要的', '.join


查看完整回答
反對(duì) 回復(fù) 2023-03-30
?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

干得好:


df1 = df.groupby(['InvoiceNo', 'ItemCode'], sort=False).Qty.sum().reset_index()

df1['Desired result'] = df1.ItemCode + '-' + df1.Qty.astype(str)

print(df1.groupby(['InvoiceNo'])['Desired result'].apply(lambda res: ', '.join(sorted(res))).reset_index())

輸出:


  InvoiceNo      Desired result

0   Inv-001       a-1, b-2, c-1

1   Inv-002  a-4, b-1, c-1, d-4

2   Inv-003            b-2, e-1


查看完整回答
反對(duì) 回復(fù) 2023-03-30
  • 2 回答
  • 0 關(guān)注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)