2013-09-27 3 views
3

Я пытаюсь преобразовать такой список:создать dataframe из списка длины неравны списков

l = [[1, 2, 3, 17], [4, 19], [5]] 

к dataframe, имеющему каждый из числа как Indice и позиции списка в качестве значения.

Например, 19 во втором списке, поэтому я ожидаю получить одну строку с «19» в качестве индекса и «1» в качестве значения и так далее.

мне удалось получить его (cf.boiler пластины ниже), но я предполагаю, что есть что-то более простое

>>> df=pd.DataFrame(l)  
>>> df=df.unstack().reset_index(level=0,drop=True)  
>>> df=df[df.notnull()==True] # remove NaN rows 
>>> df=pd.DataFrame(df)  
>>> df = df.reset_index().set_index(0)  
>>> print df 
    index 
0   
1  0 
4  1 
5  2 
2  0 
19  1 
3  0 
17  0 

Спасибо заранее.

ответ

3
In [52]: pd.DataFrame([(item, i) for i, seq in enumerate(l) 
         for item in seq]).set_index(0) 
Out[52]: 
    1 
0  
1 0 
2 0 
3 0 
17 0 
4 1 
19 1 
5 2 
Смежные вопросы