![](/img/trans.png)
[英]Check if row value in a dataframe exists in another dataframe using loop for reconciliation
[英]How to perform reconciliation using DataFrame?
假設我有一個每周獲取的DataFrame,並且想更新一個基於每周報告進行更新的跟蹤器,例如:
這是我收到的每周報告:
ID Cost
X12 500
X54 100
X52 150
X45 200
X32 435
我有一個用於主要指標跟蹤器的DataFrame,需要根據每周報告進行更新:
ID Cost
X12 34
X54 467
X52 234
X45 3453
X37 4664
X76 34
X57 467
X52 23465
X48 547
X32 34
我想從DataFrame 1中獲取數字並將其放入DataFrame 2中,這將導致:
ID Cost
X12 500
X54 100
X52 150
X45 200
X37 4664
X76 34
X57 467
X56 23465
X48 547
X32 435
我將如何執行從一個DataFrame到另一個DataFrame這樣的功能。 我假設我們使用for循環並在遍歷第一個DataFrame的同時搜索第二個DataFrame,但是我將如何設置它呢?
謝謝!
如果訂單不是問題,那么
In [1178]: dfw.set_index('ID').combine_first(dfo.set_index('ID')).reset_index()
Out[1178]:
ID Cost
0 X12 500.0
1 X32 435.0
2 X37 4664.0
3 X45 200.0
4 X48 547.0
5 X52 150.0
6 X52 150.0
7 X54 100.0
8 X57 467.0
9 X76 34.0
這也將照顧到任何新的ID
添加。
您可以使用map和Combine_first
df2['Cost'] = df2['ID'].map(df1.set_index('ID')['Cost']).combine_first(df2['Cost'])
你得到
ID Cost
0 X12 500.0
1 X54 100.0
2 X52 150.0
3 X45 200.0
4 X37 4664.0
5 X76 34.0
6 X57 467.0
7 X52 150.0
8 X48 547.0
9 X32 435.0
你可以這樣
where
df -> first dataframe
df1 -> second dataframe
碼:
df.loc[df.ID.isin(df1.ID), ['Cost']] = df1[['Cost']]
print df
參考:
使用drop_duplicates
rep.append(track).drop_duplicates('ID')
ID Cost
0 X12 500
1 X54 100
2 X52 150
3 X45 200
4 X32 435
4 X37 4664
5 X76 34
6 X57 467
8 X48 547
如果您想重置索引
rep.append(track).drop_duplicates('ID').reset_index(drop=True)
ID Cost
0 X12 500
1 X54 100
2 X52 150
3 X45 200
4 X32 435
5 X37 4664
6 X76 34
7 X57 467
8 X48 547
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.