从不等长的嵌套列表创建一个熊猫数据框

Kvo*_*the 8 python nested list pandas

所以我有一个列表如下:

aa = ['aa1', 'aa2', 'aa3', 'aa4', 'aa5']
bb = ['bb1', 'bb2', 'bb3', 'bb4']
cc = ['cc1', 'cc2', 'cc3']
Run Code Online (Sandbox Code Playgroud)

然后将其创建为嵌套列表:

nest = [aa, bb, cc]
Run Code Online (Sandbox Code Playgroud)

我想创建一个数据框如下:

aa   bb   cc
aa1  bb1  cc1
aa2  bb2  cc2
aa3  bb3  cc3
aa4  bb4  nan
aa5  nan  nan
Run Code Online (Sandbox Code Playgroud)

我试过了:

pd.DataFrame(nest, columns=['aa', 'bb', cc'])
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*ine 8

zip_longest从功能itertools做到这一点:

>>> 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
Run Code Online (Sandbox Code Playgroud)

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