python - 将数据帧上的行一一连接

标签 python python-3.x pandas dataframe concatenation

我有2个数据框

df1:
  data  type
0    a     1
1    b     1
2    c     1
3    d     1
4    e     1

df2:
  data  type
0    v     2
1    w     2
2    x     2
3    y     2
4    z     2 

arr = [['a', 1], ['b', 1], ['c', 1], ['d', 1], ['e', 1]]
arr2 = [['v', 2], ['w', 2], ['x', 2], ['y', 2], ['z', 2]]

df1 = pd.DataFrame(arr, columns=['data', 'type'])
df2 = pd.DataFrame(arr2, columns=['data', 'type'])

我想连接并制作数据帧,就像在模式中打乱一样,第一个是类型一,第二个是类型2......

预期输出:

  data  type
0    a     1
1    v     2
2    b     1
3    w     2
4    c     1
5    x     2
6    d     1
7    y     2
8    e     1
9    z     2

约束:例如,如果 df1 有更多行,然后 df2 则输出如下

   data  type
0     a     1
1     v     2
2     b     1
3     w     2
4     c     1
5     x     2
6     d     1
7     y     2
8     e     1
9     z     2
10    f     1
11    g     1
12    h     1

反之亦然。

最佳答案

一种方法是更改​​输入数据帧的索引。然后按索引连接并排序。这也将处理数据帧长度不匹配的情况。

df1.index = df1.index*2
df2.index = df2.index*2 + 1

res = pd.concat([df1, df2]).sort_index()

print(res)

  data  type
0    a     1
1    v     2
2    b     1
3    w     2
4    c     1
5    x     2
6    d     1
7    y     2
8    e     1
9    z     2

如果您需要在数据帧长度不一致时标准化索引,可以使用 reset_index 作为最后一步:

res = res.reset_index(drop=True)

关于python - 将数据帧上的行一一连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51591589/

相关文章:

python - 如何有条件地将值分配给列?

Python 无法放置模块

python - 生成 datetime.time 对象数组 python

python-3.x - model.compile 的作用是什么?

python - 根据文件扩展名打开语句

python - 在数据框中查找空值的有效方法

python - 引发似乎来自调用者的异常

python - 作用域问题,可以访问对象属性但不能访问对象实例

python - 如何在 matplotlib 中创建非线性颜色条刻度

python - Pandas groupby 保持顺序