【问题标题】:Rows are lost when reading this tab-separated file with pandas read_csv使用 pandas read_csv 读取此制表符分隔文件时行丢失
【发布时间】:2016-06-06 12:17:58
【问题描述】:

我有一个.text 文件,格式如下,其中字段(索引号、名称和消息)由\t(制表符分隔)分隔:

712 ben     Battle of the Books
713 james   i used to be in TOM
714 tomy    i was in BOB once
715 ben Tournaments of Minds
716 tommy    Also the Lion in the upcoming school play
717 tommy   Can you guess
718 tommy    P
...

我用read_csv 将其读入数据框:

 chat = pd.read_csv("f.text", sep = "\t", header = None, usecols = [2])

但是数据框只有9812 行,而普通文件有超过12428 行(只有21 个空行)。这很奇怪。你有什么主意吗?谢谢。

【问题讨论】:

  • 您能否发布一个指向您数据的下载链接,如果不发布猜测就很难在这里回答,这会适得其反
  • 很奇怪。也许是read_csv 的必要参数lineterminator。或者您可以尝试添加index_col=None。如何检查df 的长度?由print len(df) ?
  • @jezrael just print df 它将显示表格下的行号。与len(df) 的结果相同
  • 嗯,很有趣。如果省略usecolslength 还是错的?
  • 嗯,试试像chat = pd.read_csv("f.text", skiprows=9810, sep = "\t", header = None, usecols = [2])这样跳过行,然后检查print df.columns列和索引print df.index

标签: python pandas csv quoting


【解决方案1】:

我认为你需要添加参数quoting:

import csv

chat = pd.read_csv("f.text",sep = "\t", header = None, usecols = [2], quoting=csv.QUOTE_NONE)

【讨论】:

  • jezrael 你能解释一下为什么会这样吗,即为什么未引用的 read 掉线?否则,它就不是其他用户可重复使用的资源。
  • 天啊,这救了我!看起来 read_csv() 的默认行为要求所有内容都用引号引起来。但是如果它是一个没有引号的制表符分隔文件,那么你需要指定这样,否则数据解析会出错
猜你喜欢
  • 2017-11-25
  • 1970-01-01
  • 2018-01-08
  • 2017-10-25
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
  • 1970-01-01
  • 2012-12-23
相关资源
最近更新 更多