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

标签 python pandas dataframe series nested-lists

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

>>> 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

关于python - 将未知大小列表的列表拆分为 n 号的数据框。列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46640214/

相关文章:

python - 读取 csv 行并为每一行创建列表

python - 如何将一个数据框中的每一列与另一个数据框中的所有列相乘

Pandas :如何检查 Pandas 数据框是否包含特定值?

python - 根据自定义分隔符反转字符串

python - 在 Sphinx 中记录带有长描述的参数

Python动态来自?

python - Pandas 将数据帧的行转换为对角线数据帧

python - 在 DataFrame 的列中而不是行中表达时间序列数据

python - Pandas 的 CSV 加载错误

python - Pandas :如果条件为真,则在 2 个值之间填充列