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添加的评论!