Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将大小未知的列表拆分为具有n个列的数据帧_Python_Pandas_Dataframe_Series_Nested Lists - Fatal编程技术网

Python 将大小未知的列表拆分为具有n个列的数据帧

Python 将大小未知的列表拆分为具有n个列的数据帧,python,pandas,dataframe,series,nested-lists,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

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

>>> 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
有没有更简单的方法来实现相同的数据帧?

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

是否执行
max(len(row)表示sr中的行)
唯一的方法?

使用

In [149]: sr.apply(pd.Series)
Out[149]:
     0    1    2
0  1.0  2.0  3.0
1  3.0  1.0  1.0
2  3.0  2.0  NaN
3  1.0  NaN  NaN
4  2.0  3.0  4.0
使用


将序列转换为
numpy数组
,然后转换为
列表

df = pd.DataFrame(sr.values.tolist())
print (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

如果输入是嵌套列表,最好是。

将序列转换为
numpy数组
,然后再转换为
列表

df = pd.DataFrame(sr.values.tolist())
print (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

如果输入是嵌套列表,则更好。

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

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

感谢@jezrael添加的评论!感谢@jezrael添加的评论!