1
.astype(str)是将一系列整数转换为一系列字符串的最有效方法吗?这似乎相当缓慢,所以我想问。将大熊猫系列整数转换为字符串的最有效方法?
.astype(str)是将一系列整数转换为一系列字符串的最有效方法吗?这似乎相当缓慢,所以我想问。将大熊猫系列整数转换为字符串的最有效方法?
我尝试了一些东西,找到了更快的方法使用numpy的:
setup = """
import pandas, numpy
s = pandas.Series(numpy.random.randint(1,10,(100)))
"""
>>> timeit.timeit('s.astype(str)', setup=setup, number=10000)
3.33058500289917
>>> timeit.timeit('s.apply(str)', setup=setup, number=10000)
3.572000026702881
>>> timeit.timeit('s.apply(lambda x: str(x))', setup=setup, number=10000)
3.821247100830078
>>> timeit.timeit('s.values.astype(numpy.str)', setup=setup, number=10000)
0.08432412147521973
正如你所看到的,accesing的numpy的阵列values
,并使用astype
调用比下一个最快的方法快了40倍。
这使用一个内部例程是nansafe。但是,空检查是相当便宜的,所以这有一个快速路径(如果没有空值)是有意义的。问题在这里:https://github.com/pydata/pandas/issues/8732 – Jeff 2014-11-04 22:08:15