In [8]: s
Out[8]:
a 1
b 2
c 3
dtype: int64
In [9]: list(zip(s,s.index))
Out[9]: [(1, 'a'), (2, 'b'), (3, 'c')]
In [10]: tuple(zip(s,s.index))
Out[10]: ((1, 'a'), (2, 'b'), (3, 'c'))
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
3条答案
按热度按时间j91ykkif1#
看来
zip(s,s.index)
也能用了!对于Python-3.x,我们需要用
list
Package 它-字符串
要获取元组的元组,请使用
tuple()
:tuple(zip(s,s.index))
。样品运行-
型
j2datikz2#
使用
s.items()
(EDIT:在pandas 1.5中,也曾经有一个
s.iteritems()
,就像在Python 2中一样,区别是iteritems()
返回一个迭代器,而items()
返回一个列表。要以列表而不是迭代器的形式获得输出,你可以这样做:list(s.items())
)pb3s4cty3#
一种可能性是交换索引元素的顺序和
iteritems
中的值:字符串
编辑:@Divakar的答案快了大约2倍。构建一系列随机字符串进行测试:
型
时间:
型