我有三份 list :

row = [0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4]
col = [0, 1, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]
val = ['', 'Heading', 'Prio', 'Black', 'USA', 'Inve', 'CAN', 'White', 'Busy', '', '', '', '', '', 'Req', '', '', '', '', '', 'Info', 'X', 'N/A', 'N/A', 'X', 'X']

其中rowcol包含val中的每个元素的索引.

我想构建一个DataFrame,以便根据rowcol的元素将每个元素val放在适当的位置(应该注意,每个列表中元素的索引将始终完全匹配;val中的第一个元素将始终对应于rowcol中的第一个元素给出的行和列索引,依此类推).

因此,从上面三个列表创建的df应该如下所示:

|    |      |        Heading                   |
|---:|:----:|:----:|:----:|:----:|:----:|:----:|
|  0 | Prio | Black| USA  | Inve | CAN  | White|
|  1 | Busy |      |      |      |      |      |
|  2 | Req  |      |      |      |      |      |
|  3 | Info |   X  | N/A  | N/A  | X    | X    |

然而,这只是一个例子,因为我需要能够对具有任意数量的行和列索引的任意大小的列表执行此操作.我如何着手将这些列表转换为DFS?

推荐答案

最简单的方法可能是创建一个Numy数组,然后只需根据行/列索引填充它,并将其转换为数据帧:

import numpy as np
import pandas as pd

arr = np.full((max(row)+1, max(col)+1), '', object)
arr[row, col] = val
df = pd.DataFrame(arr[1:], columns=arr[0])

样例数据的输出:

        Heading
0  Prio   Black  USA  Inve  CAN  White
1  Busy
2   Req
3  Info       X  N/A   N/A    X      X

Python相关问答推荐

Inquirer库不适用于Pyterfly

如何推迟对没有公钥的视图/表的反射?

在Python中是否可以输入使用任意大小参数列表的第一个元素的函数

如何获取Django REST框架中序列化器内部的外卡属性?

避免循环的最佳方法

遵循轮廓中对象方向的计算线

覆盖Django rest响应,仅返回PK

从DataFrame.apply创建DataFrame

如何使用没有Selenium的Python在百思买着陆页面上处理国家/地区 Select ?

GL pygame无法让缓冲区与vertextPointer和colorPointer一起可靠地工作

多处理代码在while循环中不工作

在Mac上安装ipython

无法定位元素错误404

如何使用它?

OR—Tools CP SAT条件约束

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

多指标不同顺序串联大Pandas 模型

使用特定值作为引用替换数据框行上的值

使用Python从rotowire中抓取MLB每日阵容

交替字符串位置的正则表达式