我正在将.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')})
是否有一种方法可以将所有列一次转换为数字,而不必一一命名呢?
答案 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通常在解释类型方面做得很好,但是我假设您有一些特定的用例。