私は、系列をその値を持つインデックスのタプルに変換する効率的な方法を探しています。pandasシリーズをインデックスと値のタプルに変換する方法
[(1, 'a'), (2, 'b'), (3, 'c')]
私は、系列をその値を持つインデックスのタプルに変換する効率的な方法を探しています。pandasシリーズをインデックスと値のタプルに変換する方法
[(1, 'a'), (2, 'b'), (3, 'c')]
まあそれはあまりにも単純zip(s,s.index)
作品です!
一つの可能性は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
s.items()
またはs.iteritems()
これを行います。
(あなたがリストではなくイテレータlist(s.items())
として出力を取得したい場合)
'そうでなければ、のpython3でジップオブジェクトを取得する'リスト(郵便番号(S、s.index))でなければなりません –