簡體   English   中英

如果兩個不同數據幀中兩列的值匹配,則將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中的值相同的行中的“描述”列從df2添加至df1中如果兩個數據框中的“ ID”列中的值都匹配,則將列“ Result2”(已復制)。

以下是數據幀:

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放在應該是一個空單元格的地方。 如何在熊貓中做到這一點? 我嘗試了合並,但是我遇到了問題,因為它要求比較列的長度相同。 我只想比較兩個數據幀的“ ID”列中的值,並且這些列的長度不同。

使用僅merge具有左聯接的列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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM