我有以下列出某些交易的資料框
df1
ProductId Code Cost
1 101 £1000
1 101 £2000
2 101 £1500
2 101 £1000
但是我需要將資料更改為較低級別的資料。而這方面的資訊可以在df2中找到
df2
ProductId Code2 Percent
1 201 0.25
1 301 0.75
2 201 0.60
2 301 0.40
因此,生成的資料框應如下所示:
df1
ProductId Code Cost
1 201 £250
1 301 £750
1 201 £500
1 301 £1500
2 201 £900
2 301 £600
2 201 £600
2 301 £400
生成的資料框將需要復制行以適應較低級別的代碼。(即每個 ProductId = 1 將代碼 101 分為 201 和 301,成本根據百分比變化進行調整)。
我首先使用 pandas concat 復制行:
df_new = pd.concat([df1]*2, ignore_index=True)
但是,我正在努力想辦法有效地將資料更改為:
- 更改代碼(為每個 ProductId 更改為 201 和 301)
- 更改成本(按百分比)
任何指導將不勝感激。謝謝
uj5u.com熱心網友回復:
你可以做merge
out = df1.merge(df2,on = 'ProductId').assign(Cost = lambda x : x['Cost']*x['Percent'])
Out[509]:
ProductId Code Cost Code2 Percent
0 1 101 250.0 201 0.25
1 1 101 750.0 301 0.75
2 1 101 500.0 201 0.25
3 1 101 1500.0 301 0.75
4 2 101 900.0 201 0.60
5 2 101 600.0 301 0.40
6 2 101 600.0 201 0.60
7 2 101 400.0 301 0.40
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/435582.html
