如果两个不同数据框中两列的值匹配,则将 df2 中另一列的值复制到 df1 中的列
If values from two columns in two different data frames match then copy values from another column in df2 to column in df1
我有两个数据框,我想将 df2 中 "Result2" 列的值复制到 df1 中的 "Result1" 列,并将 df2 中的 "Description" 列添加到 df1对于与列 "Result2" 中的值(已复制)位于同一行的值,如果两个数据框中的列 "ID" 中的值匹配。
这是数据框:
df1
ID Result1
Position1 NaN
MRS1 OK
MRS2 Maybe
MRS3 NOK
Position2 NaN
MRS4 OK
MRS5 OK
Position3 NaN
MRS6 OK
Position4 NaN
MRS7 NOK
MRS8 OK
MRS9 NOK
MRS10 Excellent
df2
ID Result2 Description
text NaN NaN
NaN NaN text
text NaN NaN
MRS1 OK New
MRS2 OK Old
NaN NaN NaN
NaN NaN text
MRS3 OK New
MRS4 OK New
MRS5 OK NaN
MRS6 NOK Very old
NaN text NaN
text text NaN
NaN NaN NaN
MRS7 Excellent Very old
MRS8 Excellent Old
text text text
MRS9 Excellent New
NaN NaN NaN
MRS10 NOK New
我想得到:
ID Result1 Result2
Position1 NaN NaN
MRS1 OK New
MRS2 OK Old
MRS3 OK New
Position2 NaN NaN
MRS4 OK New
MRS5 OK NaN
Position3 NaN NaN
MRS6 NOK Very old
Position4 NaN NaN
MRS7 Excellent Very old
MRS8 Excellent Old
MRS9 Excellent New
MRS10 NOK New
我把 NaN 放在应该是空单元格的地方。如何在 pandas 中执行此操作?
我尝试了合并,但我遇到了问题,因为它需要相同长度的比较列。我只想比较两个数据框中 "ID" 列的值,这些列的长度不同。
仅将 ID
列与左连接和 rename
列一起使用 merge
:
df = (df1[['ID']].merge(df2, on='ID', how='left')
.rename(columns={'Result2':'Result1','Description':'Result2'}))
print (df)
ID Result1 Result2
0 Position1 NaN NaN
1 MRS1 OK New
2 MRS2 OK Old
3 MRS3 OK New
4 Position2 NaN NaN
5 MRS4 OK New
6 MRS5 OK NaN
7 Position3 NaN NaN
8 MRS6 NOK Very old
9 Position4 NaN NaN
10 MRS7 Excellent Very old
11 MRS8 Excellent Old
12 MRS9 Excellent New
13 MRS10 NOK New
我有两个数据框,我想将 df2 中 "Result2" 列的值复制到 df1 中的 "Result1" 列,并将 df2 中的 "Description" 列添加到 df1对于与列 "Result2" 中的值(已复制)位于同一行的值,如果两个数据框中的列 "ID" 中的值匹配。
这是数据框:
df1
ID Result1
Position1 NaN
MRS1 OK
MRS2 Maybe
MRS3 NOK
Position2 NaN
MRS4 OK
MRS5 OK
Position3 NaN
MRS6 OK
Position4 NaN
MRS7 NOK
MRS8 OK
MRS9 NOK
MRS10 Excellent
df2
ID Result2 Description
text NaN NaN
NaN NaN text
text NaN NaN
MRS1 OK New
MRS2 OK Old
NaN NaN NaN
NaN NaN text
MRS3 OK New
MRS4 OK New
MRS5 OK NaN
MRS6 NOK Very old
NaN text NaN
text text NaN
NaN NaN NaN
MRS7 Excellent Very old
MRS8 Excellent Old
text text text
MRS9 Excellent New
NaN NaN NaN
MRS10 NOK New
我想得到:
ID Result1 Result2
Position1 NaN NaN
MRS1 OK New
MRS2 OK Old
MRS3 OK New
Position2 NaN NaN
MRS4 OK New
MRS5 OK NaN
Position3 NaN NaN
MRS6 NOK Very old
Position4 NaN NaN
MRS7 Excellent Very old
MRS8 Excellent Old
MRS9 Excellent New
MRS10 NOK New
我把 NaN 放在应该是空单元格的地方。如何在 pandas 中执行此操作? 我尝试了合并,但我遇到了问题,因为它需要相同长度的比较列。我只想比较两个数据框中 "ID" 列的值,这些列的长度不同。
仅将 ID
列与左连接和 rename
列一起使用 merge
:
df = (df1[['ID']].merge(df2, on='ID', how='left')
.rename(columns={'Result2':'Result1','Description':'Result2'}))
print (df)
ID Result1 Result2
0 Position1 NaN NaN
1 MRS1 OK New
2 MRS2 OK Old
3 MRS3 OK New
4 Position2 NaN NaN
5 MRS4 OK New
6 MRS5 OK NaN
7 Position3 NaN NaN
8 MRS6 NOK Very old
9 Position4 NaN NaN
10 MRS7 Excellent Very old
11 MRS8 Excellent Old
12 MRS9 Excellent New
13 MRS10 NOK New