python一口气将一堆列转换为数字

时间:2018-07-16 14:23:44

标签: python pandas

我正在将.csv加载到数据帧(df)中,一次将一列转换为数字:

 df = pd.read_csv(fullPath, converters={'Total requests received': lambda x: pd.to_numeric(x, errors='coerce'),
                                           'Requests Processed': lambda x: pd.to_numeric(x, errors='coerce'),
                                           'Requests still being processed': lambda x: pd.to_numeric(x, errors='coerce')})

是否有一种方法可以将所有列一次转换为数字,而不必一一命名呢?

1 个答案:

答案 0 :(得分:2)

最近有同样的问题。您应该能够使用dtype来指定何时读取csv。请查看此问题和以下代码:Pandas reading csv as string type

import pandas as pd

# this will make everything a float, so no truncation occurs
df = pd.read_csv(file_path, dtype=float)

# or if you aren't afraid of truncation
df = pd.read_csv(file_path, dtype=int)

需要说明的是,此解决方案将尝试将每列读取为int或float(尽管您可以将dtype指定为dict {col:dtype},但这不是您的问题)。 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

如果要使用numpy类型,请检查以下类型:https://docs.scipy.org/doc/numpy-1.13.0/user/basics.types.html

或者,@ Harv Ipan的回答也很好,并且可以实现相同的目标。尽管有额外的迭代。

最后,考虑您是否真的需要这个。 Pandas通常在解释类型方面做得很好,但是我假设您有一些特定的用例。