Skip to main content
 首页 » 编程设计

python之将未知大小列表的列表拆分为 n 号的数据框。列数

2025年05月04日13jillzhang

给定一个内部列表大小未知的列表列表,例如:

>>> import pandas as pd 
>>> lol = [[1,2,3], [3,1,1], [3,2], [1], [2,3,4]] 
>>> sr = pd.Series(lol) 
>>> sr 
0    [1, 2, 3] 
1    [3, 1, 1] 
2       [3, 2] 
3          [1] 
4    [2, 3, 4] 
dtype: object 

如何将列表拆分为 3 个列表?如果列表少于 3 个,则使用 None

填充列表

目标是从 3 个列表中获取包含 3 列的数据框,即:

   0    1    2 
0  1  2.0  3.0 
1  3  1.0  1.0 
2  3  2.0  NaN 
3  1  NaN  NaN 
4  2  3.0  4.0 

我试过这样做:

lol = [[1,2,3], [3,1,1], [3,2], [1], [2,3,4]] 
sr = pd.Series(lol) 
 
df = [] 
n = 3 
for row in sr: 
    while len(row) < n: 
        row.append(None) 
    df.append(row) 
 
df = pd.DataFrame(df) 
df 

[输出]:

    0   1   2 
0   1   2.0 3.0 
1   3   1.0 1.0 
2   3   2.0 NaN 
3   1   NaN NaN 
4   2   3.0 4.0 

是否有更简单的方法来实现相同的数据框?

如果 n 事先未知,是否有更简单的方法来实现相同的最终数据帧?

max(len(row) for row in sr) 是唯一的方法吗?

请您参考如下方法:

pd.DataFrame 构造函数可以很好地处理。

lol = [[1,2,3], [3,1,1], [3,2], [1], [2,3,4]] 
 
pd.DataFrame(lol) 
 
   0    1    2 
0  1  2.0  3.0 
1  3  1.0  1.0 
2  3  2.0  NaN 
3  1  NaN  NaN 
4  2  3.0  4.0