繁体   English   中英

pandas.read_csv写入文件

[英]pandas.read_csv writes out to file

我正在从csv文件中提取货运数据,出于隐私目的已经编辑了数据,但是要看的是在我的csv文件中使用pandas.read_csv时,如下所示的原始文件在这种意义上是正常的:ZIP代码(01234)的前导0,订单号(22276)是整数。

使用pandas.read_csv并打印出数据(并在文本编辑器中查看数据)后,我发现从邮政编码中取出了前导0(现在是1234),并且订单号现在是一个浮点数( 22276.0)

原版的:

地面,第三方,公司名称,1 Road Ave,Town,State,01234,,22276,22276,22276,客户名称,街道名称,00000 00th Ave ZZ ,, Town,State,00001,V476V6,18001112222 ,, ,包装,1

使用pandas.read_csv之后:

地面,第三方,梦想,100 Higginson Ave,LINCOLN,RI,1234,,22276.0,22276.0,22276.0 ,,客户名,街道名,00000 00th Ave ZZ ,,镇,州,00001,V476V6,18001112222 ,,,包,1

我已经看到其他人也有这些问题,在这些问题中,您将看到有关如何解决该问题的写得很好的答案。 我想知道的是为什么问题首先存在。 为什么读取功能会将原始数据写回到文件中?

编辑

这是我当前正在使用的代码,引用是带有订单号的列的名称。

import pandas
grid = pandas.read_csv("thirdparty.csv", dtype={'ZIP': int, 'REFERENCE': int})
with pandas.option_context('display.max_rows', None, 'display.max_columns', None):
    print(grid)

怎么样

您将要使用的dtype的参数pd.read_csv 一种解决方案是将所有列都读取为字符串类型。 这将完全保留csv文件中的值。

import pandas as pd
data = pd.read_csv("thirdparty.csv", dtype=str)

尽管更好的解决方案是为每列指定所需的dtype:

data = pd.read_csv(("thirdparty.csv", dtype={‘ZIP’: str, ‘REFERENCE’: int} 

再次写回csv文件时,还应使用float_format参数以确保根据需要写入任何浮点数。

为什么

您还询问了为什么 “问题”存在。

本质上,当您pd.read_csv不指定pd.read_csv情况下使用pd.read_csv时,任何看起来像数字的内容都将作为浮点数读取。 因此,读取时01234将转换为1234

当您写回文件时,该数字现在被写为浮点数。 pd.read_csv函数将数据写出到原始文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM