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