[英]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
按列id
和date
左連接,然后將缺失值除以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.