簡體   English   中英

將兩列除以兩列

[英]divide two columns group by two columns

我想將兩列收入來自 df1 和來自 df2 的收入按 id 和日期分組。

我做了這樣的事情,但出現錯誤。

df.groupby(['id','date']).agg({'ratio': lambda L: df1['revenue'].div(df2['revenue'])})

數據

df1 = pd.DataFrame({'id':['x1', 'x2'],
           'date':['2021-01-02',
           '2021-01-03'],
       'revenue':[50,10]})

df2 = pd.DataFrame({'id':['x2', 'x1', 'x1'],
            'date':['2021-01-03','2021-01-02', '2021-01-01'],
       'revenue':[100,100, 200]})

預計 output

     id     date    ratio

0   x2  2021-01-03      0.5

1   x1  2021-01-02      0.1

2   x1  2021-01-01      0

使用DataFrame.merge按列iddate左連接,然后將缺失值除以0並替換:

s = df2.merge(df1, on=['id','date'], how='left')['revenue_y'].div(df2['revenue'])
df2['ratio']  = s.fillna(0)
print (df2)
   id        date  revenue  ratio
0  x2  2021-01-03      100    0.1
1  x1  2021-01-02      100    0.5
2  x1  2021-01-01      200    0.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM