2016-07-19 24 views

Antwort

13

Nun, es scheint einfach zip(s,s.index) funktioniert auch!

+2

sollte 'Liste sein (Wenn Sie die Ausgabe als Liste und nicht als Iterator list(s.items()) erhalten mögen) (zip (s, s.index))' Sie sonst ein Zip-Objekt in python3 bekommen –

4

Eine Möglichkeit ist, die Reihenfolge der Indexelemente und die Werte von iteritems zu tauschen:

res = [(val, idx) for idx, val in s.iteritems()] 

EDIT: @ Divakar Antwort ist schneller um etwa einen Faktor von 2. Erstellen einer Reihe von zufälligen Zeichenfolgen für den Test:

N = 100000 
str_len = 4 
ints = range(N) 
strs = [None]*N 
for i in ints: 
    strs[i] = ''.join(random.choice(string.ascii_letters) for _ in range(str_len)) 
s = pd.Series(ints, strs) 

Timings:

%timeit res = zip(s,s.index) 
>>> 100 loops, best of 3: 14.8 ms per loop 

%timeit res = [(val, idx) for idx, val in s.iteritems()] 
>>> 10 loops, best of 3: 26.7 ms per loop 
2

s.items() oder s.iteritems() dies tun.