使用pandas在python中读取csv文件

时间:2019-05-28 13:58:17

标签: python pandas csv

我有一个程序,可以将多个.csv文件聚合到一个文件中。当我执行添加3个结构相同的文件(列的数量和名称)时,它会传递一条成功消息,通知3个文件共1154341行。当我添加另一个具有相同结构的文件时,该消息将更新为四个文件和1446553行。到目前为止,一切都很好。当我使用熊猫读取它们(pd.read_csv(file.csv))时,两个文件的大小相同,但文件较小。当我分析单个列时,请注意两个数据框的索引差异:

 #Union of 3 .csv files
 >>>df_reembolsos_1['ideCadastro']
 0               NaN
 1               NaN
 2               NaN
 ...................
 1154338    195997.0
 1154339    195997.0
 Name: ideCadastro, Length: 1154339, dtype: float64



 # Union of 4 .csv file
 >>> df_reembolsos_2['ideCadastro]
 0               NaN
 1               NaN
 2               NaN
 ...................
 1446550    195997
 1446551    195997
 Name: ideCadastro, Length: 1154339, dtype: object

令我惊讶的是,在读取第一个文件时,索引的数量等于大小,而在第二种情况下,索引的数量大于大小。我看了两个文件,它们实际上是不同的,并且具有连接不同文件编号的预期大小。我注意到的一个区别是读取较大文件时,以下警告消息:

  

Dtype警告:列(1,2,3,4,5,8,10,11,12,13,15,22,23,28)具有混合类型。

当我阅读较小的文件时,此消息仅涉及第1列。因此,我想知道此问题是熊猫的局限性还是数据方面的问题,如何解决?

1 个答案:

答案 0 :(得分:0)

This excellent answer非常详尽地介绍了DtypeWarning。指定读取时的Dtypes。

对于索引具有意外大小:

  1. 追加时,可以忽略索引。
  2. 阅读时,您可以使用.read_csv kwarg index_col-如果pandas不能正确解释该错误,可能是罪魁祸首。
  3. 检查read_csv是否确实在读取正确的行数,是否没有一堆空行,等等。