如何将任意长度嵌套列表转换为Pandas DataFrame列格式?
解决方案
核心思路
先统一拆解所有输入列表,把所有最底层的一维数值列表提取出来,再将这些列表作为单独列传入Pandas构造DataFrame。这种方法完全适配二维列表中子列表数量的任意变化。
代码实现
先准备你的输入数据:
import pandas as pd l1 = [1,2,3,4] l2 = [[5,6,7,8], [9,10,11,12]] l3 = [[13,14,15,16], [17,18,19,20]]
写一个通用的拆解函数,自动识别并处理一维/二维列表:
def flatten_lists(input_list): # 如果是二维列表,直接返回所有子列表;如果是一维列表,包装成列表的列表统一格式 if isinstance(input_list[0], list): return input_list else: return [input_list]
把所有需要处理的列表放到一个容器里,逐个拆解收集所有子列表:
all_lists = [l1, l2, l3] columns = [] for lst in all_lists: columns.extend(flatten_lists(lst))
最后转成DataFrame,自动生成列名:
df = pd.DataFrame({f'col_{i+1}': col for i, col in enumerate(columns)}) print(df)
输出结果
运行后会得到符合需求的DataFrame:
col_1 col_2 col_3 col_4 col_5 0 1 5 9 13 17 1 2 6 10 14 18 2 3 7 11 15 19 3 4 8 12 16 20
适配性说明
- 不管l2、l3这类二维列表里有多少个子列表,拆解函数都会把它们全部拆出来作为单独的列
- 后续新增同类列表(比如l4是包含3个子列表的二维列表),只需要把l4加到
all_lists里即可,无需修改其他代码
内容的提问来源于stack exchange,提问作者user13132640
相关产品推荐
相关产品推荐

