有没有一种更快的方法将pandas数据帧的所有列强制转换为一种类型?这似乎特别缓慢:
df = df.apply(lambda x: x.astype(np.float64), axis=1)
我怀疑我对此无能为力,因为
numpy.ndarray.astype
的内存分配开销。我也尝试过
pd.to_numeric
但是它任意选择将我的一些列转换为int
类型。 最佳答案
无需apply
,直接使用DataFrame.astype
。
df.astype(np.float64)
apply
-ing也会给你带来相当糟糕的表现。例子
df = pd.DataFrame(np.arange(10**7).reshape(10**4, 10**3))
%timeit df.astype(np.float64)
1 loop, best of 3: 288 ms per loop
%timeit df.apply(lambda x: x.astype(np.float64), axis=0)
1 loop, best of 3: 748 ms per loop
%timeit df.apply(lambda x: x.astype(np.float64), axis=1)
1 loop, best of 3: 2.95 s per loop