我用这种格式获取数据..

ListA =
[
    [('test1', 'aaa', 'A'),('test2', 'bbb', 'B'),('test3', 'ccc', 'C')],
    [('test4', 'ddd', 'D'),('test5', 'eee', 'E'),('test6', 'fff', 'F')],
    [('test7', 'ggg', 'A'),('test8', 'hhh', 'B'),('test9', 'ppp', 'C')]
]

我想转换成这种格式

ID, ColA, ColB, ColC,
1, 'test1', 'aaa', 'A'
1, 'test2', 'bbb', 'B'
1, 'test3', 'ccc', 'C'
2, 'test4', 'ddd', 'D'
2, 'test5', 'eee', 'E'
2, 'test6', 'fff', 'F'
3, 'test7', 'ggg', 'A'
3, 'test8', 'hhh', 'B'
3, 'test9', 'ppp', 'C'

推荐答案

你可以使用itertools.chain:

from itertools import chain
df = pd.DataFrame(chain.from_iterable(ListA),
                  columns=['ColA', 'ColB', 'ColC'])

输出:

    ColA ColB ColC
0  test1  aaa    A
1  test2  bbb    B
2  test3  ccc    C
3  test4  ddd    D
4  test5  eee    E
5  test6  fff    F
6  test7  ggg    A
7  test8  hhh    B
8  test9  ppp    C

使用索引(可以处理不均匀的列表长度):

from itertools import chain
import numpy as np

idx = np.repeat(np.arange(len(ListA))+1, list(map(len, ListA)))

df = pd.DataFrame(chain.from_iterable(ListA),
                  columns=['ColA', 'ColB', 'ColC'],
                  index=idx).rename_axis('ID')

输出:

     ColA ColB ColC
ID                 
1   test1  aaa    A
1   test2  bbb    B
1   test3  ccc    C
2   test4  ddd    D
2   test5  eee    E
2   test6  fff    F
3   test7  ggg    A
3   test8  hhh    B
3   test9  ppp    C

Python-3.x相关问答推荐

需要使用regex匹配字符串的帮助,直到最后一次出现开闭括号,开闭括号中的值是可选的

msg-seviri l1.5本机文件

两个 y 轴在零处对齐的 plotly barplot

将值从函数传递到标签

如何键入提示函数,在 Python 中通过类decorator 添加到类中

如何在不使用循环的情况下根据另一个数组的索引值将 numpy 数组中不同通道的值设置为零?

numpy是如何添加@运算符的?

导入在不同目录中定义的函数

避免重复连续字符但不包括一个特定字符的正则表达式

如何在数据['column']中的'string'等条件下应用pandas

TimescaleDB:是否可以从 Python 调用create_hypertable?

为什么包含类的名称不被识别为返回值函数注释?

如何在 Selenium 和 Python 中使用类型查找元素

是否在未完成初始化的对象上调用了 del?

如何在继承的数据类中创建可选字段?

0 是 0 == 0(#evaluates 为真?)

异常被忽略是什么类型的消息?

如何修复:cx_Oracle.DatabaseError:DPI-1047:找不到 64 位 Oracle 客户端库 - Python

如何阻止散景在 Jupyter Notebook 中打开新标签?

Python 无法处理以 0 开头的数字字符串.为什么?