Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫在同一个表中合并,多个列产生意外输出_Python_Pandas_Join_Merge_Inner Join - Fatal编程技术网

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'})

这将产生所需的结果。

我们可以看到一些示例数据吗?