给定一个内部列表大小未知的列表列表,例如:
>>> 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/