从长度不等的列表列表中创建数据帧

时间:2013-09-27 17:49:22

标签: pandas

我尝试转换这样的列表:

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

到一个数据框,每个数字作为indice,列表的位置为value。

例如,19位于第二个列表中,因此我希望得到一行,其中“19”作为索引,“1”作为值,依此类推。

我设法得到它(cf.boiler plate下面),但我想有更简单的事情

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

提前致谢。

1 个答案:

答案 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