python - Pandas:合并两个一维数据帧,输出两列并填充唯一元素的值

标签 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

我想以保留两列的方式合并它们,连接公共(public)值而不考虑它们的索引,并且使用另一行中的填充值保留唯一值,也就是说,我想要这个结果:

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

但是这两个没有产生期望的结果。我尝试过不同的选项,但没有成功。

我还研究了其他方法,例如 appendassign,但似乎没有一个提供执行此操作的功能。

我觉得这是一个常见的操作,应该有一个简单直接的解决方案,所以我可能会忽略一些明显的东西。

你能告诉我它是如何正确完成的吗?

最佳答案

解决方案 concat它通过 index 连接值,所以 set_index是必要的:

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

关于python - Pandas:合并两个一维数据帧,输出两列并填充唯一元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41931809/

相关文章:

python - 添加/更改表单中的 ForeignKey 字段 - Django admin

python-2.7 - 在没有表单的python flask 中上传zip文件

Python:装饰器可以从 foo1() 访问参数并将其提供给 foo2() 吗?

python-2.7 - django-dynamic-scraper : No module named django. core.management

python - 我怎样才能填写我的数据框

python - 我如何改进这个功能来删除旧的node_modules文件夹

python - 如何使用 psycopg 和 gevent 合并连接?

python - 计算平均值和标准差列并将其添加到数据框中

pandas - 时间序列数据框中转换和流失客户的摘要

python - 根据字符串过滤 pandas 上的列