【发布时间】:2021-08-06 18:09:08
【问题描述】:
我有 df1 和 df2,我想创建新的数据框 df3,这样 df3 的第一条记录应该是 df1 的第一条记录,df3 的第二条记录应该是 df2 的第一条记录。并以类似的方式继续。
我用 pandas 尝试了很多方法,但没有得到答案。
有什么方法可以实现吗?
【问题讨论】:
-
您能否编辑您的问题并将
df1、df2的样本和预期输出发布到那里?
我有 df1 和 df2,我想创建新的数据框 df3,这样 df3 的第一条记录应该是 df1 的第一条记录,df3 的第二条记录应该是 df2 的第一条记录。并以类似的方式继续。
我用 pandas 尝试了很多方法,但没有得到答案。
有什么方法可以实现吗?
【问题讨论】:
df1、df2 的样本和预期输出发布到那里?
您可以创建一个具有递增 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'])
【讨论】:
你可以这样做:
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
【讨论】: