将两个单独的数据框之间的对应列合并为新的数据框

时间:2019-07-17 23:21:53

标签: python pandas

我有两个如下所示的数据框:

df1

Column 1   Column 2  Column 3 
0.2         0.4       0.5 
0.25        0.44      0.45 
0.26        0.32      0.33

df2

Column 1   Column 2  Column 3 
340         350       360
410         400       350
234         324       450

我如何结合df1df2来创建一个数据帧df3,该数据帧具有并排#相同的列,即

df3 
Column 1  Column 1  Column 2  Column 2  Column 3  Column 3
0.2         340       0.4       350      0.5       360
0.25        410       0.44      400      0.45      350 
0.26        234       0.32      324      0.33      450

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以在这里尝试更理想的订购方式:Pandas concatenate alternating columns

但是,如果以所需的方式显式组合数据帧,则读取代码会容易得多。

首先声明新的列名:

dataCols = ['c1', 'c2', 'c3', 'c4', 'c5', 'c6']

然后替换系列:

dataSeries = [df1.Column1, df2.Column1, df1.Column2, df2.Column2, df1.Column3, df2.Column3]

(如果您当前的列名中有空格,请使用df1['Column 1']

然后合并到字典中并创建一个数据框:

dataDict = dict(list(zip(dataCols, dataSeries)
newDf = pd.DataFrame(dataDict)

这将创建具有交替列的数据框。

答案 1 :(得分:0)

要为任何数据框(具有任何可能不相同的列名称)替换列,请首先合并两个数据框,然后通过按所需顺序传递列名称列表来对其重新排序。

对于交替顺序,首先获取两个数据框列名称的列表

l1 = df1.columns
l2 = df2.columns

然后创建成对的列名,将它们压缩成两个列表(结果为('col1','col1') ....等)

colNames = zip(l1, l2)

然后与列表理解交替使用

combinedNames = [name for pair in colNames for name in pair]

这将创建带有成对的列名称的列表。

将此列表应用于合并的数据框以对其重新排序:

combinedDf = combinedDf[combinedNames]