Could you help me to find a way to create a dataframe from a list Here is an example:
['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']
I would like to have the following output:
['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']
before creating the dataframe. Thanks for your help
CodePudding user response:
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])
If you have dictionary
format, you can try follows:
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()))
CodePudding user response:
First, get the max lenth of the lists what will be the lenth the lists would have be in the result. Fill up every list with NaN
s to the required lenth.
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']
]