Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.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 Pandas:合并两个1D数据帧,输出两列,并使用唯一元素的填充值_Python_Python 2.7_Pandas_Join_Merge - Fatal编程技术网

Python Pandas:合并两个1D数据帧,输出两列,并使用唯一元素的填充值

Python Pandas:合并两个1D数据帧,输出两列,并使用唯一元素的填充值,python,python-2.7,pandas,join,merge,Python,Python 2.7,Pandas,Join,Merge,我有两个数据帧: import pandas as pd df1 = pd.DataFrame({'A':[1,2,4,6]}) df2 = pd.DataFrame({'A':[1,2,3,6]}) df1 Out[27]: A 0 1 1 2 2 4 3 6 df2 Out[28]: A 0 1 1 2 2 3 3 6 我希望以一种方式合并它们,即保留两列,连接公共值而忽略其索引,并使用另一行中的填充值保留唯一值,也就是说,我希望得到以下结果:

我有两个数据帧:

import pandas as pd
df1 = pd.DataFrame({'A':[1,2,4,6]})
df2 = pd.DataFrame({'A':[1,2,3,6]})


df1
Out[27]: 
   A
0  1
1  2
2  4
3  6

df2
Out[28]: 
   A
0  1
1  2
2  3
3  6
我希望以一种方式合并它们,即保留两列,连接公共值而忽略其索引,并使用另一行中的填充值保留唯一值,也就是说,我希望得到以下结果:

   A_x  A_y
0  1.0  1.0
1  2.0  2.0
2  NaN  3.0
3  4.0  NaN
4  6.0  6.0
我试过了

pd.merge(df1,df2,on=['A'],how='outer')
pd.concat([df1,df2],axis=1,join='outer')
但这两种方法并没有产生预期的效果。我尝试过不同的选择,但没有运气

我还研究了其他方法,如append和assign,但似乎没有一种方法提供这样做的功能

我觉得这是一个普通的操作,应该有一个简单明了的解决方案,所以我可能忽略了一些显而易见的东西

您能告诉我如何正确执行吗?

通过索引连接值的解决方案,因此有必要:

df = pd.concat([df1.set_index('A', drop=False).A,
                df2.set_index('A', drop=False).A],
                axis=1, 
                keys=('A_x','A_y')).reset_index(drop=True)
print (df)
   A_x  A_y
0  1.0  1.0
1  2.0  2.0
2  NaN  3.0
3  4.0  NaN
4  6.0  6.0

谢谢,我有一个关于使用set_索引的预感。它可能不适合您的需要,但是如果您想保留这两个列以便比较和对比重叠,您可能会对for merge感兴趣。它添加了一个带注释的列,显示合并前该行是否存在于左、右或两列中。这是很有价值的信息,谢谢。
df2 = df2.set_index('A', drop=False)
kws = dict(on='A', lsuffix='_x', rsuffix='_y', how='outer')
df1.join(df2, **kws).drop('A', 1)

   A_x  A_y
0  1.0  1.0
1  2.0  2.0
2  4.0  NaN
3  6.0  6.0
3  NaN  3.0