Python 熊猫在同一个表中合并,多个列产生意外输出
我有一个数据帧Python 熊猫在同一个表中合并,多个列产生意外输出,python,pandas,join,merge,inner-join,Python,Pandas,Join,Merge,Inner Join,我有一个数据帧df,列为:[value,arg1,arg2,diff\u value]。我想找到df中(diff_value,arg1,arg2)的所有行(作为前3列)。我的代码是: contains_df = df.merge(df, left_on=['value', 'arg1', 'arg2'], right_on=['diff_value', 'arg1', 'arg2'])\ .dro
df
,列为:[value
,arg1
,arg2
,diff\u value
]。我想找到df中(diff_value,arg1,arg2)的所有行(作为前3列)。我的代码是:
contains_df = df.merge(df,
left_on=['value', 'arg1', 'arg2'],
right_on=['diff_value', 'arg1', 'arg2'])\
.drop(columns=['value_y', 'diff_value_y'])\
.rename(columns={'value_x':'value', 'diff_value_x':'diff_value'})
然后,我假设df[df.value=='a']
其中'a'
是包含
的第1行中差异值的值将至少产生一行。然而,我没有得到任何行,这意味着我的合并没有达到我预期的效果。我该如何解决这个问题
例如,使用:
df = pd.DataFrame({'value':['a', 'b', 'c', 'd'], 'arg1': [1, 1, 0, 0],
'arg2':[0, 0, 1, 1], 'diff_value':['z', 'a', 'b', 'y']})
我希望结果是第2行:[值:'b',arg1:1,arg2:1,差异值:'a']
因为('a'
,1,0)在第1行中是(值,arg1,arg2)。但是,输出是第1行 问题在于,需要交换合并上的left_和right_中的第一个值
contains_df = df.merge(df,
left_on=['diff_valuevalue', 'arg1', 'arg2'],
right_on=['value', 'arg1', 'arg2'])\
.drop(columns=['value_y', 'diff_value_y'])\
.rename(columns={'value_x':'value', 'diff_value_x':'diff_value'})
这将产生所需的结果。我们可以看到一些示例数据吗?