2017-02-07 22 views
0

我有这样的数据帧:转换数据框中,以列表的列表

     value 
time 
2016-12-01 00:00:00   NaN 
2016-12-01 00:01:00   2 
2016-12-01 00:02:00   1 

我想这个数据帧转换成一个列表的列表,喜欢这样的:

[['2016-12-01 00:00:00', NaN],['2016-12-01 00:01:00', 2],['2016-12-01 00:02:00', 1]] 

我试图df.valuesdf.values.tolist(),并始终接受:

[[ nan] 
[ 2] 
[ 1]] 

回答

5

如果您致电reset_index恢复索引,然后你可以叫.values.tolist(),以获得期望的结果:

In [117]: 
df.reset_index().values.tolist() 

Out[117]: 

[['2016-12-01 00:00:00', nan], 
['2016-12-01 00:01:00', 2.0], 
['2016-12-01 00:02:00', 1.0]] 

values返回numpy的阵列,这有一个方法tolist()转换成一个列表的列表

2

需要DataFrame.reset_index第一,DataFrame.values回报numpy arraytolist()其转换为nested list

print (df.index) 
Index(['2016-12-01 00:00:00', '2016-12-01 00:01:00', '2016-12-01 00:02:00'], 
dtype='object', name='time') 


print (df.reset_index().values.tolist()) 
[['2016-12-01 00:00:00', nan], ['2016-12-01 00:01:00', 2.0], ['2016-12-01 00:02:00', 1.0]] 

但如果DatetimeIndex是必要的转换indexstringastype

print (df.index) 
DatetimeIndex(['2016-12-01 00:00:00', '2016-12-01 00:01:00', 
       '2016-12-01 00:02:00'], 
       dtype='datetime64[ns]', name='time', freq=None) 

print (df.reset_index().values.tolist()) 
[[Timestamp('2016-12-01 00:00:00'), nan], 
    [Timestamp('2016-12-01 00:01:00'), 2.0], 
    [Timestamp('2016-12-01 00:02:00'), 1.0]] 

df.index = df.index.astype(str) 
print (df.reset_index().values.tolist()) 
[['2016-12-01 00:00:00', nan], ['2016-12-01 00:01:00', 2.0], ['2016-12-01 00:02:00', 1.0]]