在Python中合并具有非唯一值的列上的两个数据框

tk2*_*215 5 python merge dataframe pandas

我正在尝试基于“X”列合并 Python 中的两个数据框。

左侧数据框中的 X 列具有非唯一值,右侧数据框中的 X 列具有唯一值。如何将右侧数据框中的值合并到左侧数据框中?

我想将 df2 中的行合并到 df1 中以形成 df3

df1 = pd.DataFrame({'A': ['NA','EU','LA','ME'],
                    'B': [50, 23,21,100],
                    'X': ['IW233', 'IW455', 'IW455', 'IW100']})

df2 = pd.DataFrame({'C': [50, 12, 12, 11, 10, 16],
                    'X': ['IW455', 'IW200', 'IW233', 'IW150', 'IW175', 'IW100'],
                    'D': ['Aug', 'Sep', 'Jan', 'Feb', 'Dec', 'Nov']})
Run Code Online (Sandbox Code Playgroud)

df3:1

jez*_*ael 4

可以merge与左连接一起使用,如果只是X连接列on参数可以省略:

df = pd.merge(df1, df2, how='left')
print (df)
    A    B      X   C    D
0  NA   50  IW233  12  Jan
1  EU   23  IW455  50  Aug
2  LA   21  IW455  50  Aug
3  ME  100  IW100  16  Nov
Run Code Online (Sandbox Code Playgroud)

如果有多个相同的列名:

df = pd.merge(df1, df2, on='X', how='left')
print (df)
    A    B      X   C    D
0  NA   50  IW233  12  Jan
1  EU   23  IW455  50  Aug
2  LA   21  IW455  50  Aug
3  ME  100  IW100  16  Nov
Run Code Online (Sandbox Code Playgroud)

  • 也许有一些空格,然后需要`df1['X'] = df1['X'].astype(str).str.strip()`。与“df2”相同。 (2认同)