Pandas通过两列连接DataFrames

And*_*rei 6 python merge dataframe pandas

你能帮我加入两个DataFrame吗?

我有两个DataFrame.

DF1:

index   val1    val2
--------------------
1       str1    abc1
2       str2    abc2
3       str3    abc3
4       str4    abc9
5       str5    abc4
Run Code Online (Sandbox Code Playgroud)

DF2:

index   val2
------------
1       abc1
2       abc2
4       abc3 
5       abc4
9       abc5
Run Code Online (Sandbox Code Playgroud)

我需要基于前两个创建一个DataFrame,左边连接两列.列索引和val2在两个DataFrame中具有相同的名称.df3的结果应如下所示:

index   val1    val2    val3
----------------------------
1       str1    abc1    1
2       str2    abc2    1
3       str3    abc3    NaN
4       str4    abc9    NaN
5       str5    abc4    1
Run Code Online (Sandbox Code Playgroud)

如果df1中的索引与df2中的val2相同,则应删除df2中不存在于df1中的索引,然后将1添加到新列val3中,否则:NaN.

非常感谢提前!

jpp*_*jpp 5

这是一种方式。如下所示,我建议您使用Boolean而不是floatfor val3,因为这代表了系列。

# merge and set index
res = df1.merge(df2, how='left').set_index('index')

# map val2 from df2
res['val3'] = df2.set_index('index')['val2']

# check for equality of val3 and val2
res['val3'] = res['val3'] == res['val2']

print(res)

       val1  val2   val3
index                   
1      str1  abc1   True
2      str2  abc2   True
3      str3  abc3  False
4      str4  abc9  False
5      str5  abc4   True
Run Code Online (Sandbox Code Playgroud)