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

2024-09-30 01:32:03 发布

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

您能帮我找到一种从列表中创建数据帧的方法吗?以下是一个示例:

['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']

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


Tags: 数据nane91e111e245e88e139e248
2条回答

首先,获取列表的最大长度,即列表在结果中的长度。在每个列表中填入NaN到所需长度

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']
]

试试这个:

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()))

相关问题 更多 >

    热门问题