我有两个看起来像这样的数据框,
DF1:
SP1 Count1
ANDGER 2
CARCRA 4
CAR 3
PANVIR 1
和df2:
SP2 Count2
CARCRA 7
CAR 6
PANVIR 4
我想根据匹配第一列中的id(df1中的SP1和df2中的SP2)将它们合并在一起,但我想保留仅在其中一个数据帧中的ID 。
我想要的输出是:
Species Count1 Count2
ANDGER 2 NaN
CARCRA 4 7
CAR 3 6
PANVIR 1 4
我试过了:
df1.set_index('SP1')
df2.set_index('SP2')
pd.merge(df1, df2,left_index=True, right_index=True)
但它不会保留不匹配的内容。
编辑:
值得为我起作用的代码是:
pd.merge(df1,df2,left_index=True, right_index=True, how='outer')
答案 0 :(得分:1)
您可以使用pd.concat()
。
import pandas as pd
# your data
# ===========================
df1
SP1 Count1
0 ANDGER 2
1 CARCRA 4
2 CAR 3
3 PANVIR 1
df2
SP2 Count2
0 CARCRA 7
1 CAR 6
2 PANVIR 4
# processing
# ==========================
pd.concat([df1.set_index('SP1'), df2.set_index('SP2')], axis=1, join='outer')
Count1 Count2
ANDGER 2 NaN
CAR 3 6
CARCRA 4 7
PANVIR 1 4
答案 1 :(得分:1)
您可以按如下方式使用pd.merge
print pd.merge(df1,df2, left_on='SP1', right_on='SP2', how='outer')
SP1 Count1 SP2 Count2
0 ANDGER 2 NaN NaN
1 CARCRA 4 CARCRA 7
2 CAR 3 CAR 6
3 PANVIR 1 PANVIR 4
如果您要合并的列中有重复的条目,请更好地使用groupby。