Dizileri, değerleriyle birlikte dizinin bir kopyasına dönüştürmenin etkili bir yolunu arıyorum.pandalar dizisini indeks ve değerlerin tuple haline getirme
[(1, 'a'), (2, 'b'), (3, 'c')]
Dizileri, değerleriyle birlikte dizinin bir kopyasına dönüştürmenin etkili bir yolunu arıyorum.pandalar dizisini indeks ve değerlerin tuple haline getirme
[(1, 'a'), (2, 'b'), (3, 'c')]
Peki zip(s,s.index)
zamanda çalışan basitçe görünüyor!
Bir olasılık iteritems
gelen endeks elemanları ve değerlerin sırasını takas etmektir:
res = [(val, idx) for idx, val in s.iteritems()]
s = pd.Series([1, 2, 3], ['a', 'b', 'c'])
Ben bazı iterable bir dizi, liste, dizi istiyorum DÜZENLEME: @ Divakar'ın cevabı yaklaşık 2 kat daha hızlıdır. Test için bir dizi rastgele dizge oluşturma:
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)
Zamanlamaları:
%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()
veya s.iteritems()
bunu yapın.
'liste olmalıdır (zip (s, s.index)) (Bunun yerine bir yineleyici
list(s.items())
daha bir liste olarak çıktı almak istiyorsanız)' aksi takdirde python3 bir fermuar nesnesini almak –