2
我有兩個數據幀(df1和df2),我打算根據df1中的列'pin','pin1',pin2'合併df1和df2在df2中列'pincode2'。數據幀的多重合並,無需替換值
結構:
df1 df2
ID Name pin pin1 pin2 pin3 pincode value
1 A1 1001 4521 3223 6433 1001 W1
2 A5 1002 4556 1002 O1
3 X3 4531 4341 4563 1003 X3
4 A4 4633 4633 4633 4633 1004 Z2
5 B3 5346 3452 1005 Y9
6 B4 1001 1006 G4
7 F5 6512 1007 R3
現在,我使用下面的代碼執行大熊貓合併:
# Importing libraries
import pandas as pd
import cvs as csv
#********************************************************************#
# Importing the files
df1= pd.read_csv('/Users/one/Input/df1.csv', encoding = "ISO-8859-1")
df2= pd.read_csv('/Users/one/Input/df2.csv', encoding = "ISO-8859-1")
#*************************************************************#
# Creating a column as a flag
df1['mapping_type']= 'Unmapped'
#*************************************************************#
# Merging/Joining the two data frame
df_first_run = pd.merge(left=df1, right=df2, left_on= 'pin', right_on= 'pincode', how='left')
正如你所看到的,我需要重複這個合併與列「PIN1 ''pin1'的df1。不過,我不想繼續更改列名稱df2,否則我會替換先前獲得的值。
此外,mapped_type列必須更改以顯示映射了哪個列。
Expected Output:
ID Name pin pin1 pin2 pin3 value mapping_type
1 A1 1001 4521 3223 6433 W1 pin
2 A5 1002 4556 O2 pin
3 X3 4531 4341 4563 P3 pin3
4 A4 4633 4633 4633 4633 Q2 pin2
5 B3 5346 3452 Unmapped
6 B4 1001 W1 pin
7 F5 6512 Q2 pin2
首先讓我說非常感謝你回答這個問題,我同意你的方法和建議選擇第一個,我只有兩個疑問,1.是否可以將映射保存爲數據框以便導出它。 2.我可以映射兩列,即'value'和'value1' –
@ user3875610,您可以通過簡單地寫'df.to_csv('filename.csv')'來保存數據幀。至於映射兩列,當然,但你想要列映射到什麼?你應該更新你的問題。 – firelynx
瞭解,其實我覺得我很滿意這個答案。感謝您的幫助 –