2 回答

TA贡献1820条经验 获得超10个赞
如果所有的行都是独特的使用concat有drop_duplicates:
df = pd.concat([df2, df1], ignore_index=True).drop_duplicates()
print (df)
order_id shop
0 12345 'NL'
1 45678 'FR'
2 12345 'DE'
3 34567 'NL'
5 99999 'FR'
6 12345 'UK'
如果不是唯一的过滤器不等于行merge同indicator=True,然后concat到df2:
df3 = df1.merge(df2, how='left', indicator=True).query('_merge == "left_only"')[df1.columns]
df = pd.concat([df2, df3], ignore_index=True)

TA贡献1863条经验 获得超2个赞
看起来您希望创建一组所有可能的组合?如果是这样,您可以使用以下方法创建唯一对:
import pandas as pd
data1 = {'order_id': [12345, 45678, 78901, 12345, 12901, 12345], 'shop': ['NL', 'FR', 'AB', 'AB', 'NL', 'NL']}
df1 = pd.DataFrame(data=data1)
data2= {'order_id': [12345, 45678, 12345, 34567], 'shop': ['NL', 'FR', 'DE', 'NL']}
df2 = pd.DataFrame(data=data2)
df3 = df1
df3['Combi'] = df3['order_id'].astype('str') + df3['shop']
df3.drop_duplicates('Combi', inplace=True)
添加回答
举报