【发布时间】:2017-04-29 17:51:00
【问题描述】:
我正在使用以下内容读取 Pandas 数据框:
df = pd.read_csv('../table.csv.gz', nrows=10000,
index_col=False, engine='c',
true_values=[b'1'], false_values=[b'0'],
usecols=usecols, dtype=dtype)
我收到以下警告:
DtypeWarning: Columns (5,2397,2402,2449) have mixed types. Specify dtype option on import or set low_memory=False.
但列的标题名称存在于dtype 中。所有这些列的指定类型是np.bool,并且 csv 文件中这些列中存在的唯一值是 '1' 和 ''(逗号之间没有任何内容。这给出了一个类型为 object 的列,并且调用 DataFrame.fillna 时变为类型 bool)。
此外,当我编辑 CSV 文件以删除除违规列之外的所有列以尝试查明警告的来源时,警告停止发生。
发生了什么事?这是read_csv 中的错误吗?我应该忽略警告吗?
【问题讨论】:
-
由于文件很大,很可能是分块读取和处理。它尝试将列存储为
np.bool,但缺少的值迫使它将该块存储为object。 Pandas 使用np.nan表示缺失值,因此在替换缺失值之前,该列必须为object或float。警告告诉您,由于分块读取,您可能在数据框中混合了dtypes。您是否尝试为这些列的dtype指定object或float?
标签: python python-3.x csv pandas dataframe