【问题标题】:combining two dataframes into one new dataframe in a zig zag/zipper way以之字形/拉链方式将两个数据帧组合成一个新数据帧
【发布时间】:2021-08-06 18:09:08
【问题描述】:

我有 df1 和 df2,我想创建新的数据框 df3,这样 df3 的第一条记录应该是 df1 的第一条记录,df3 的第二条记录应该是 df2 的第一条记录。并以类似的方式继续。

我用 pandas 尝试了很多方法,但没有得到答案。

有什么方法可以实现吗?

【问题讨论】:

  • 您能否编辑您的问题并将df1df2 的样本和预期输出发布到那里?

标签: python pandas dataframe


【解决方案1】:

您可以创建一个具有递增 id 的列(一个具有奇数,另一个具有偶数:

import numpy as np
df1['unique_id'] = np.arange(0, df1.shape[0]*2,2)
df2['unique_id'] = np.arange(1, df2.shape[0]*2,2)

然后附加它们并按此列排序:

df3 = df1.append(df2)
df3 = df3.sort_values(by=['unique_id'])

之后您可以删除您创建的列:

df3 = df3.drop(columns=['unique_id'])

【讨论】:

  • 成功了。我正在尝试熊猫系列
  • 乐于助人!!
  • @jade - 请将答案标记为正确。谢谢
【解决方案2】:

你可以这样做:

import pandas as pd

df1 = pd.DataFrame({'A':[3,3,4,6], 'B':['a1','b1','c1','d1']})
df2 = pd.DataFrame({'A':[5,4,6,1], 'B':['a2','b2','c2','d2']})

dfff = pd.DataFrame()
for i in range(0,4):
    dfx = pd.concat([df1.iloc[i].T, df2.iloc[i].T])
    dfff = pd.concat([dfff, dfx])
    
    
print(pd.concat([df1, df2]).sort_index(kind='merge'))

这给了

 A   B
0  3  a1
0  5  a2
1  3  b1
1  4  b2
2  4  c1
2  6  c2
3  6  d1
3  1  d2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多