有没有一种更快的方法将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

08-05 18:50