我有以下两个数据帧:
df1:
col1 col2 col3
a d 1
a d 2
b e 3
b e 4
c f 5
c f 6
df2:
col4 col5 col6
g d 1
g b 2
h c 3
h f 4
i a 5
i b 6我想通过比较df2的col5中的值和df1的col2中的值来合并两个数据帧,并且只保留匹配的值。因此,合并后的数据帧将如下所示:
df3:
col1 col2 col3 col4 col5 col6
a d 1 NaN NaN NaN
a d 2 NaN NaN NaN
NaN NaN NaN g d 1
c f 5 NaN NaN NaN
c f 6 NaN NaN NaN
NaN NaN NaN h f 4我意识到我可以合并,但它合并了行,但我希望保持行的分离。
发布于 2017-12-28 16:34:54
你所需要的可能是条件选择和连接
one = df[df['col2'].isin(df2['col5'])]
two = df2[df2['col5'].isin(df['col2'])]
ndf = pd.concat([one,two.set_axis(two.index + one.index.max()+1,inplace=False)], 1)
# Setting axis with `max+1` to avoid concatenation over same index.
col1 col2 col3 col4 col5 col6
0 a d 1.0 NaN NaN NaN
1 a d 2.0 NaN NaN NaN
4 c f 5.0 NaN NaN NaN
5 c f 6.0 NaN NaN NaN
6 NaN NaN NaN g d 1.0
9 NaN NaN NaN h f 4.0https://stackoverflow.com/questions/48003731
复制相似问题