2016-05-12 90 views

回答

3

您可以使用tolistlist

print df.index.tolist() 

print list(df.index) 

但最快的解決方法是轉換np.arryvaluestolist(謝謝EdChum

print df.index.values.tolist() 

樣品:

import pandas as pd 

idx = pd.Index([u'Newal', u'Saraswati Khera', u'Tohana']) 
print idx 
Index([u'Newal', u'Saraswati Khera', u'Tohana'], dtype='object') 

print idx.tolist() 
[u'Newal', u'Saraswati Khera', u'Tohana'] 

print list(idx) 
[u'Newal', u'Saraswati Khera', u'Tohana'] 

如果您需要編碼UTF-8

print [x.encode('UTF8') for x in idx.tolist()] 
['Newal', 'Saraswati Khera', 'Tohana'] 

另一種解決方案:

print [str(x) for x in idx.tolist()] 
['Newal', 'Saraswati Khera', 'Tohana'] 

,但它會失敗,如果unicode字符串的字符不要躺在地上e ascii範圍。

時序

import pandas as pd 
import numpy as np 

#random dataframe 
np.random.seed(1) 
df = pd.DataFrame(np.random.randint(10, size=(3,3))) 
df.columns = list('ABC') 
df.index = [u'Newal', u'Saraswati Khera', u'Tohana'] 
print df 

print df.index 
Index([u'Newal', u'Saraswati Khera', u'Tohana'], dtype='object') 

print df.index.tolist() 
[u'Newal', u'Saraswati Khera', u'Tohana'] 

print list(df.index) 
[u'Newal', u'Saraswati Khera', u'Tohana'] 

print df.index.values.tolist() 
[u'Newal', u'Saraswati Khera', u'Tohana'] 


In [90]: %timeit list(df.index) 
The slowest run took 37.42 times longer than the fastest. This could mean that an intermediate result is being cached 
100000 loops, best of 3: 2.18 µs per loop 

In [91]: %timeit df.index.tolist() 
The slowest run took 22.33 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 1.75 µs per loop 

In [92]: %timeit df.index.values.tolist() 
The slowest run took 62.72 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 787 ns per loop 
+0

很好的總結,注意使用打印的方式會比較長(根據%timeit〜的3.5倍)來運行 – ysearka

+0

好主意,我添加它。 – jezrael

+0

如果性能是關鍵,使用底層np數組''df.index.values.tolist()'這將比其他方法更快 – EdChum