[英]Pandas conditionally merge dataframes
我有以下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
我知道我可以合並,但可以合並行,但是我想將行分開。
您可能需要的是條件選擇和連接,即
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.