我有两个基于我的数据库和API响应的数据框:
database_data=[
{
"id": 123,
"user_id": 555,
"_deleted": True
},
{
"id": 456,
"user_id": 555,
"_deleted": True
}]
api_data = [
{
"id": 123,
"user_id": 555,
"_deleted": True
},
{
"id": 789,
"user_id": 555,
"_deleted": True
}
]
基于这些数据,我想在API和数据库之间执行合并并应用规则:
我已经开始编写一些代码来执行合并,但是我不知道如何添加此条件列。
df_db = pd.DataFrame.from_dict(database_data)
df_api = pd.DataFrame.from_dict(api_data)
# df_api.merge(df_db ... ??)
有什么建议可以解决吗?
答案 0 :(得分:3)
我将merge
与indicator=True
一起使用
df_db=df_api.drop('_deleted',1).merge(df_db.drop('_deleted',1) , on = ['id','user_id'],indicator=True,how='right')
df_db['_deleted']=df_db['_merge'].map({'both':False,'right_only':True})
df_db
Out[135]:
id user_id _merge _deleted
0 123 555 both False
1 456 555 right_only True
答案 1 :(得分:3)
将merge
与indicator=True
一起使用,然后可以比较指标输出以获取列。
res = df_api.merge(df_db, how='left', indicator='indicator')
res['_deleted'] = res.pop('indicator') != "both"
_deleted id user_id
0 False 123 555
1 True 789 555