重温mbatchkarov的链接,
low_memory是不会被弃用。这是目前记录在案:
low_memory : 布尔值,默认为True
在内部对文件进行分块处理,从而在解析时减少了内存使用,但可能是混合类型推断。要确保没有混合类型,请设置False或使用 dtype
参数指定类型。请注意,无论使用 chunksize 还是 iterator
参数以块形式返回数据,整个文件都将被读取到单个Dataframe中。(仅对C解析器有效)
我问什么 导致混合类型推断的 意思,而chris-b1回答:
它是确定性的-根据数据中的内容一致地推断类型。就是说,内部块大小不是固定的行数,而是字节数,因此无论您是否可以混合使用dtype警告,都会感觉有些随机。
那么, Pandas最终用于那些列的类型是什么?
下面的独立示例可以回答这一问题:
df=pd.read_csv(StringIO('n'.join([str(x) for x in range(1000000)] + ['a string'])))DtypeWarning: Columns (0) have mixed types. Specify dtype option on import or set low_memory=False.type(df.loc[524287,'0'])Out[50]: inttype(df.loc[524288,'0'])Out[51]: str
csv数据的第一部分仅被视为int,因此转换为int,第二部分也具有字符串,因此所有条目均保留为字符串。
事实发生后是否总是可以恢复类型? (收到警告后)?
我想重新导出到csv并重新阅读
low_memory=False应该可以完成这项工作。
low_memory = False究竟如何解决该问题?
在确定类型之前,它会读取所有文件,因此需要更多的内存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)