2016-07-19 24 views

答えて

13

まあそれはあまりにも単純zip(s,s.index)作品です!

+2

'そうでなければ、のpython3でジップオブジェクトを取得する'リスト(郵便番号(S、s.index))でなければなりません –

4

一つの可能​​性はiteritemsからインデックス要素と値の順序を交換することです:

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

s = pd.Series([1, 2, 3], ['a', 'b', 'c']) 

私は、いくつかの反復可能な配列、リスト、シリーズをしたいです編集:@ Divakarの答えは約2倍高速です。テストのための一連のランダムな文字列を構築:

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) 

タイミング:

%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()またはs.iteritems()これを行います。

(あなたがリストではなくイテレータlist(s.items())として出力を取得したい場合)

関連する問題