从不同大小的列表创建数据框架



你能帮我找到一种方法从列表中创建数据框架吗?这里是一个例子:

['E139', 'E216', 'E248', 'E111', 'E91', 'E245', 'E88']
['E102', 'E139', 'E216', 'E238', 'E186', 'E111', 'E91', 'E88']
['E256', 'E46', 'E232', 'E139', 'E37', 'E216', 'E235', 'E73', 'E91', 'E88']
['E230', 'E31', 'E198', 'E237', 'E233', 'E10', 'E120', 'E46', 'E82', 'E25', 'E164', 'E253', 'E104', 'E54', 'E18']

我希望有以下输出:

['E139', 'E216', 'E248', 'E111', 'E91', 'E245', 'E88','NaN','NaN','NaN','NaN','NaN','NaN','NaN','NaN']
['E102', 'E139', 'E216', 'E238', 'E186', 'E111', 'E91', 'E88','NaN','NaN','NaN','NaN','NaN','NaN','NaN']
['E256', 'E46', 'E232', 'E139', 'E37', 'E216', 'E235', 'E73', 'E91', 'E88', 'NaN','NaN','NaN','NaN','NaN']
['E230', 'E31', 'E198', 'E237', 'E233', 'E10', 'E120', 'E46', 'E82', 'E25', 'E164','E253', 'E104', 'E54', 'E18']

在创建数据框架之前。谢谢你的帮助

首先,获取列表的最大长度,也就是列表在结果中的长度。

NaNs填充到所需的长度。
data = [ ['E139', 'E216', 'E248', 'E111', 'E91', 'E245', 'E88'],
['E102', 'E139', 'E216', 'E238', 'E186', 'E111', 'E91', 'E88'],
['E256', 'E46', 'E232', 'E139', 'E37', 'E216', 'E235', 'E73', 'E91', 'E88'],
['E230', 'E31', 'E198', 'E237', 'E233', 'E10', 'E120', 'E46', 'E82', 'E25', 'E164', 'E253', 'E104', 'E54', 'E18']]

lenth = len(max(data, key=len))  # the lenth the lists have to be
for arr in data:
arr += ['NaN'] * (lenth - len(arr))  # adding required 'NaN's
>>> print(data)
[
['E139', 'E216', 'E248', 'E111', 'E91', 'E245', 'E88', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN'],
['E102', 'E139', 'E216', 'E238', 'E186', 'E111', 'E91', 'E88', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN'],
['E256', 'E46', 'E232', 'E139', 'E37', 'E216', 'E235', 'E73', 'E91', 'E88', 'NaN', 'NaN', 'NaN', 'NaN', 'NaN'],
['E230', 'E31', 'E198', 'E237', 'E233', 'E10', 'E120', 'E46', 'E82', 'E25', 'E164', 'E253', 'E104', 'E54', 'E18']
]

try this:

a = {'E139', 'E216', 'E248', 'E111', 'E91', 'E245', 'E88'}
b = {'E102', 'E139', 'E216', 'E238', 'E186', 'E111', 'E91', 'E88'}
c = {'E256', 'E46', 'E232', 'E139', 'E37', 'E216', 'E235', 'E73', 'E91', 'E88'}
d = {'E230', 'E31', 'E198', 'E237', 'E233', 'E10', 'E120', 'E46', 'E82', 'E25', 'E164', 'E253', 'E104', 'E54', 'E18'}

df = pd.DataFrame([a,b,c,d])

如果您有dictionary格式,您可以尝试如下:

dict_ = dict({'key1' : ['E139', 'E216', 'E248', 'E111', 'E91', 'E245', 'E88'],
'key2' : ['E102', 'E139', 'E216', 'E238', 'E186', 'E111', 'E91', 'E88'],
'key3' : ['E256', 'E46', 'E232', 'E139', 'E37', 'E216', 'E235', 'E73', 'E91', 'E88'],
'key4' : ['E230', 'E31', 'E198', 'E237', 'E233', 'E10', 'E120', 'E46', 'E82', 'E25', 'E164', 'E253', 'E104', 'E54', 'E18']
})
df = pd.DataFrame(list(dict_.values()))