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

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

按總和條件分組

按總和條件分組

至尊寶的傳說 2021-10-19 15:32:57
我有以下 df,我想按日期和參考對其進行分組,但具有總和條件。在這方面,僅當 P >= 比 PP 時,我才需要按日期和參考分組并匯總“Q”列。df = DataFrame({'Date' : ['1', '1', '1', '1'],                'Ref' : ['one', 'one', 'two', 'two'],                'P' : ['50', '65', '30', '38'],                'PP' : ['63', '63', '32', '32'],                'Q' : ['10', '15', '20', '10']})df.groupby(['Date','Ref'])['Q'].sum() #This does the right grouping byt summing the whole columndf.loc[df['P'] >= df['PP'], ('Q')].sum() #this has the right sum condition, but does not divide between Date & Ref有沒有辦法做到這一點?提前謝謝了
查看完整描述

2 回答

?
蝴蝶刀刀

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

只需在分組之前過濾:


In[15]:

df[df['P'] >= df['PP']].groupby(['Date','Ref'])['Q'].sum()


Out[15]: 

Date  Ref

1     one    15

      two    10

Name: Q, dtype: object

這首先減少了 df 的大小,因此將加快 groupby 操作


查看完整回答
反對 回復 2021-10-19
?
紫衣仙女

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

你可以這樣做:


import pandas as pd


df = pd.DataFrame({'Date' : ['1', '1', '1', '1'],

                'Ref' : ['one', 'one', 'two', 'two'],

                'P' : ['50', '65', '30', '38'],

                'PP' : ['63', '63', '32', '32'],

                'Q' : ['10', '15', '20', '10']})


def conditional_sum(x):

    return x[x['P'] >= x['PP']].Q.sum()


result = df.groupby(['Date','Ref']).apply(conditional_sum)


print(result)

輸出


Date  Ref

1     one    15

      two    10

dtype: object

更新


如果要對輸出中的多列求和,可以使用loc:


def conditional_sum(x):

    return x.loc[x['P'] >= x['PP'], ['Q', 'P']].sum()



result = df.groupby(['Date', 'Ref']).apply(conditional_sum)


print(result)

輸出


             Q     P

Date Ref            

1    one  15.0  65.0

     two  10.0  38.0

請注意,在上面的示例中,我使用 columnP是為了展示如何處理多列。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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