Создать фрейм данных из словаря списка с переменной длиной - PullRequest
0 голосов
/ 15 октября 2018

У меня есть словарь списка, который похож на -

from collections import defaultdict
defaultdict(list,
            {'row1': ['Affinity'],
             'row2': ['Ahmc',
              'Garfield',
              'Medical Center'],
             'row3': ['Alamance','Macbeth'],
             'row4': [],
             'row5': ['Mayday']})

Я хочу преобразовать это в фрейм данных.Вывод должен выглядеть как -

ID  SYN1    SYN2    SYN3    SYN4    SYN5
row1    Affinity                
row2    Ahmc    Garfield    Medical Center      
row3    Alamance    Macbeth         
row4                    
row5    Mayday

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

collections.defaultdict является подклассом dict.

Так что вы можете просто использовать pd.DataFrame.from_dict:

res = pd.DataFrame.from_dict(dd, orient='index')
res.columns = [f'SYN{i+1}' for i in res]

print(res)

          SYN1      SYN2            SYN3
row1  Affinity      None            None
row2      Ahmc  Garfield  Medical Center
row3  Alamance   Macbeth            None
row4      None      None            None
row5    Mayday      None            None
0 голосов
/ 15 октября 2018

Да, вы можете использовать Series

df=pd.Series(d).apply(pd.Series).fillna('')
Out[55]: 
             0         1               2
row1  Affinity                          
row2      Ahmc  Garfield  Medical Center
row3  Alamance   Macbeth                
row4                                    
row5    Mayday                          

Или из конструктора данных

df=pd.DataFrame(data=list(d.values()),index=d.keys())
Out[64]: 
             0         1               2
row1  Affinity      None            None
row2      Ahmc  Garfield  Medical Center
row3  Alamance   Macbeth            None
row4      None      None            None
row5    Mayday      None            None

Затем мы создаем столбец

df.columns='SYN'+(df.columns+1).astype(str)
df
Out[67]: 
          SYN1      SYN2            SYN3
row1  Affinity      None            None
row2      Ahmc  Garfield  Medical Center
row3  Alamance   Macbeth            None
row4      None      None            None
row5    Mayday      None            None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...