从长度不等的嵌套列表创建pandas数据帧

2024-05-19 15:40:37 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个清单如下:

aa = ['aa1', 'aa2', 'aa3', 'aa4', 'aa5']
bb = ['bb1', 'bb2', 'bb3', 'bb4']
cc = ['cc1', 'cc2', 'cc3']

然后创建一个嵌套列表:

^{pr2}$

我想创建一个数据帧,如下所示:

aa   bb   cc
aa1  bb1  cc1
aa2  bb2  cc2
aa3  bb3  cc3
aa4  bb4  nan
aa5  nan  nan

我试过:

pd.DataFrame(nest, columns=['aa', 'bb', cc'])

但结果是,每个列表都被写成一行(而不是列)


Tags: nanaaccbbbb1cc1bb2aa2
2条回答

选项1

pd.DataFrame(nest, ['aa', 'bb', 'cc']).T

    aa    bb    cc
0  aa1   bb1   cc1
1  aa2   bb2   cc2
2  aa3   bb3   cc3
3  aa4   bb4  None
4  aa5  None  None

选项2
自制zip_longest

^{pr2}$

或者也许

pd.DataFrame(data={'value':nest},index=['aa', 'bb', 'cc']).value.apply(pd.Series).T
Out[1297]: 
    aa   bb   cc
0  aa1  bb1  cc1
1  aa2  bb2  cc2
2  aa3  bb3  cc3
3  aa4  bb4  NaN
4  aa5  NaN  NaN

来自itertoolszip_longest函数执行以下操作:

>>> import itertools, pandas
>>> pandas.DataFrame((_ for _ in itertools.zip_longest(*nest)), columns=['aa', 'bb', 'cc'])
    aa    bb    cc
0  aa1   bb1   cc1
1  aa2   bb2   cc2
2  aa3   bb3   cc3
3  aa4   bb4  None
4  aa5  None  None

如果您有旧版本的pandas,则可能需要在列表构造函数中包装zip_longest。在较旧的Python上,您可能需要调用izip_longest,而不是{}。在

相关问题 更多 >