我有两个如下所示的数据框:
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
我如何结合df1
和df2
来创建一个数据帧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
谢谢!
答案 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]