我有以下2个数据帧:
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
我意识到我可以合并,但它结合了行,但我想将这些行分开。
答案 0 :(得分:1)
你需要的可能是条件选择和连接,即
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.0