根據以前的答案,我無法找到解決我的問題的方法。我已經到了那里,但我現在有點卡住了..
我有兩個資料框:
df_master = pd.DataFrame({'Reference_Code':['19860', '20220'],
'Price_Now':[249.99, 149.99],
'Price_Was':['',159.99],
'In_Stock':['',''],
'Updated':['',''],
})
df_master
Reference_Code Price_Now Price_Was In Stock Updated
19860 249.99
20220 149.99 159.99
df_output = pd.DataFrame({'Reference_Code':['19860', '20220', '52458','12546'],
'Price_Now':[249.99, 149.99, 12.99, 19.99],
'Price_Was':['',159.99,'',''],
'Updated':['30/10/2021','','',''],
})
df_output
Reference_Code Price_Now Price_Was Updated
19860 259.99 30/10/2021
20220 149.99 159.99
52458 12.99
12546 19.99
我希望 df_master 中的結果如下(我將單獨附加新記錄):
df_master
Reference_Code Price_Now Price_Was Updated
19860 259.99 30/10/2021
20220 149.99 159.99
我認為我需要實作這一目標的步驟:
步驟 1 使用以下代碼創建一個名為 df_match 的新資料幀,顯示 df_master 中基于 ['Reference_Code'] 匹配 df_output 的行
code1= list(df_master['Reference_Code'])
df_match = df_output.loc[df_output['Reference_Code'].isin(code1)]
STEP2從洗掉行df_match,其中df_match['Price_Now']等于df_output['Price_Now']。這將使資料框只保留那些在df_output['Price_Now'].
步驟 3 使用剩余的專案df_match作為要更新的專案df_master,df_master['Price_Now']使用來自的值更新值df_output['Price_Now']
Step 4 同時,將剩余的項用變數' 'df_match更新df_master['Updated']todaysdate
對我的方法以及如何實作這一點的任何建議將不勝感激。
提前致謝。
uj5u.com熱心網友回復:
一種可能的方法如下:
df_master_redux = df_master.drop(['In_Stock'], axis = 1)
df_ouput = pd.concat([df_master_redux, df_output]).reset_index()
df_ouput = df_ouput.drop_duplicates()
df_ouput = df_ouput.sort_values(['Reference_Code']).groupby('Reference_Code').tail(1).drop(['index'], axis=1)
回傳:
Reference_Code Price_Now Price_Was Updated
5 12546 19.99
2 19860 249.99 30/10/2021
1 20220 149.99 159.99
4 52458 12.99
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/344542.html
上一篇:有效過濾掉所有列連續為零的地方
