python - Pandas concat 外连接无法正常工作

标签 python pandas

我正在尝试加入 2 个数据框。我将在下面使用我的代码进行解释。我很抱歉,因为我不知道如何显示表输出,所以请运行代码,你就会明白我的意思。

设置:

df1 = pd.DataFrame({'A': ['A2', 'A3', 'A6', 'A7'],
                    'B': ['B2', 'B3', 'B6', 'B7'],
                    'C': ['C2', 'C3', 'C6', 'C7']})


df2 = pd.DataFrame({'A_': ['A2', 'A3', 'A4'],
                    'B_': ['B2', 'B3', 'B4'],
                    'C_': ['C2', 'C3', 'C4']})

我尝试了以下方法:

new_joined = pd.concat([df1, df2],axis=1,join='outer')

输出不是我想要的。我想要的是像这样的连接 df:

joined = pd.DataFrame({'A': ['A2', 'A3', 'A6', 'Nan','A7'],
                    'B': ['B2', 'B3', 'B6','Nan','B7'],
                    'C': ['C2', 'C3', 'C6','Nan','C7'],
                   'A_': ['A2', 'A3', 'Nan','A4','Nan'],
                   'B_': ['B2', 'B3', 'Nan','B4','Nan'],
                   'C_': ['C2', 'C3', 'Nan','C4','Nan']})
joined = joined[['A','B','C','A_','B_','C_']]

基本上,如果 df1 的一行与 df2 的另一行不匹配,我希望它是 Nan,但我尝试的函数只是将 [A6,B6,C6] 和 [A4,B4,C4 ] 在同一行上。请指教!

最佳答案

pd.concat 不起作用,因为它在索引(行或列)上对齐,而不是在任意列上对齐。您可能正在寻找merge

表格
df1.merge(df2,left_on=['A','B','C'],right_on=['A_','B_','C_'],how='outer')

关于python - Pandas concat 外连接无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57678455/

相关文章:

python - 转换 Pandas 中的 SAS 日期时间 - 多列

Python Dataframe - 获取特定数字与列值之间的最大值

用于查找百分比变化发生所需天数的 Python 函数

python - 使用 pure & pythonic 库将 Unicode/UTF-8 字符串转换为小写/大写

python - 如何使用 argsparse 使具有相同影响的脚本选项出现在同一 'help' 行中

python - 为 Pandas Dataframe 中的两列创建稀疏矩阵

python-3.x - 为什么索引名称总是出现在用pandas 创建的parquet 文件中?

python-3.x - 比较来自两个数据帧的列并删除 df2 中与 df1 中的值相差 +/-0.03 范围内的行

python - Pandas 按每周日期分组

python - 如何将包含多个字典的列表转换为字典