亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

取三個 groupby 數據幀并連接/合并 - 但一個數據幀聚合在更高級別

取三個 groupby 數據幀并連接/合并 - 但一個數據幀聚合在更高級別

青春有我 2021-07-20 20:04:42
下午所有,我有三個大的按結果分組。簡化的 df 如下所示。第一個 df 是所有客戶的總 RFQ 和總 RFQ 數量,沒有通過產品和貨幣進行細分。df1 = [('Year_Month', ['2017-11', '2017-12', '2018-01', '2018-02', '2018-05', '2018-06', '2018-07', '2018-08',]),('Client', ['RBMI', 'RBMI', 'RBMI', 'RBMI', 'QCBO', 'QCBO', 'QCBO', 'QCBO',]),('Total_RFQ_per_Client', [1, 2, 3, 4, 10, 20, 30, 40,]),('Total_RFQ_Volume_per_Client', ['1000', '2000', '3000', '4000', '10000', '20000', '30000', '40000',]),         ]# create pandas dfdf1 = pd.DataFrame.from_items(df1)df1['Total_RFQ_per_Client']=df1.Total_RFQ_per_Client.astype('int64')df1['Total_RFQ_Volume_per_Client']=df1.Total_RFQ_Volume_per_Client.astype('int64')print(df1)# df1.info()print("")  Year_Month Client  Total_RFQ_per_Client  Total_RFQ_Volume_per_Client0    2017-11   RBMI                     1                         10001    2017-12   RBMI                     2                         20002    2018-01   RBMI                     3                         30003    2018-02   RBMI                     4                         40004    2018-05   QCBO                    10                        100005    2018-06   QCBO                    20                        200006    2018-07   QCBO                    30                        300007    2018-08   QCBO                    40                        40000第二個 df 是已完成并添加了產品和貨幣列的所有客戶的詢價和詢價量。print("All Clients - Done RFQ's - Done RFQ Volume - Broken down into Product and Currency",  end='\n') df2 = [('Year_Month', ['2017-11', '2018-01', '2018-01', '2018-02', '2018-05', '2018-07', '2018-08',]),('Client', ['RBMI', 'RBMI', 'RBMI', 'RBMI', 'QCBO', 'QCBO', 'QCBO',]),('Product', ['GOVT', 'GOVT', 'CORP', 'GOVT', 'GOVT', 'GOVT', 'GOVT',]),('currency_str', ['USD', 'USD', 'GBP', 'USD', 'USD', 'USD', 'USD',]),('Done_RFQ', [1, 1, 1, 1, 10, 20, 20,]),('Done_RFQ_Volume', [1000, 500, 500, 1000, 10000, 20000, 20000,]),         ]
查看完整描述

2 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

我認為“加入”語句在這里會做得更好:


import pandas as pd 


df_joined = df1.set_index('Year_Month ').join(df2.set_index('Year_Month '))


df_joined = df_joined.set_index('Year_Month ').join(df3.set_index('Year_Month '))

如果您希望索引再次作為增量編號:


df_joined = df_joined.reset_index()

希望能幫助到你


查看完整回答
反對 回復 2021-07-28
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

以下合并似乎有效:


    dfTemp = pd.merge(df2, df3,  how='outer', on=['Year_Month','Client','Product','currency_str'])

    dfTemp = dfTemp.fillna(0)

    dfTemp['Total_RFQ'] = dfTemp['Done_RFQ'] + dfTemp['Not_Done_RFQ'] 

    dfTemp['Total_RFQ_Volume'] = (dfTemp['Done_RFQ_Volume']) + dfTemp['Not_Done_RFQ_Volume']

    df_Client_Product_Ccy_Hit_Rate_Volumes = pd.merge(dfTemp, df1,  how='inner', left_on=['Year_Month','Client'], right_on = ['Year_Month','Client'])



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

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號