Pandas CONCAT() 与创建中的合并列

Pandas CONCAT() with merged columns in Creation

我正在尝试创建一个非常大的数据框,它由许多较小数据框的一列组成(重命名为数据框名称)。我正在使用 CONCAT() 并循环遍历表示数据帧的字典值,并循环遍历索引值,以创建大型数据帧。 CONCAT() join_axes 是所有数据帧的公共索引。这工作正常,但是我有重复的列名。
作为最终数据框创建的一部分,我必须能够遍历特定 windows 处的索引 - 因此删除此步骤不是一个选项

例如,这会产生以下具有重复列的最终数据框:

有什么方法可以像我一样直接使用 CONCAT(),但合并列以产生这样的输出吗?:

你要的是df1.combine_first(df2)。参考pandas documentation.

我认为你需要:

df = pd.concat([df1, df2])

或者如果列中有重复项,请使用 groupby,如果某些值重叠,则求和:

print (df.groupby(level=0, axis=1).sum())

样本:

df1 = pd.DataFrame({'A':[5,8,7, np.nan],
                   'B':[1,np.nan,np.nan,9],
                   'C':[7,3,np.nan,0]})

df2 = pd.DataFrame({'A':[np.nan,np.nan,np.nan,2],
                   'B':[1,2,np.nan,np.nan],
                   'C':[np.nan,6,np.nan,3]})
print (df1)
     A    B    C
0  5.0  1.0  7.0
1  8.0  NaN  3.0
2  7.0  NaN  NaN
3  NaN  9.0  0.0

print (df2)
     A    B    C
0  NaN  1.0  NaN
1  NaN  2.0  6.0
2  NaN  NaN  NaN
3  2.0  NaN  3.0

df = pd.concat([df1, df2],axis=1)
print (df)
     A    B    C    A    B    C
0  5.0  1.0  7.0  NaN  1.0  NaN
1  8.0  NaN  3.0  NaN  2.0  6.0
2  7.0  NaN  NaN  NaN  NaN  NaN
3  NaN  9.0  0.0  2.0  NaN  3.0

print (df.groupby(level=0, axis=1).sum())
     A    B    C
0  5.0  2.0  7.0
1  8.0  2.0  9.0
2  7.0  NaN  NaN
3  2.0  9.0  3.0