首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以zig /zipper方式将两个数据帧合并为一个新的数据帧

以zig /zipper方式将两个数据帧合并为一个新的数据帧
EN

Stack Overflow用户
提问于 2021-08-05 13:57:01
回答 2查看 46关注 0票数 0

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

我对熊猫尝试了很多方法,但都没有得到答案。

有什么方法可以做到这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2021-08-05 14:03:14

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

代码语言:javascript
复制
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)

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

代码语言:javascript
复制
df3 = df1.append(df2)
df3 = df3.sort_values(by=['unique_id'])

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

代码语言:javascript
复制
df3 = df3.drop(columns=['unique_id'])
票数 2
EN

Stack Overflow用户

发布于 2021-08-05 14:01:41

你可以这样做:

代码语言:javascript
复制
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'))

这给了我们

代码语言:javascript
复制
 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68667994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档