使用熊猫读取csv文件时如何选择多行?

新手上路,请多包涵

我有一个非常大的 csv 文件 millions of rows 以及我需要的行号列表。比如

rownumberList = [1,2,5,6,8,9,20,22]

我知道有一种叫做 skiprows 的东西可以在 reading csv file 就像那样

df = pd.read_csv('myfile.csv',skiprows = skiplist)
#skiplist would contain the total row list deducts rownumberList

但是,由于 csv 文件非常大,直接选择我需要的行可能会更有效率。所以我想知道在使用 select rows 时是否有任何方法 read_csv ?之后不要尝试使用 dataframe 选择行,因为我尽量减少读取文件的时间。谢谢。

原文由 huier 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 277
1 个回答

有一个参数叫做 nrows : int, default None 要读取的文件行数。对于读取大文件很有用(Docs)

 pd.read_csv(file_name,nrows=int)

如果你需要中间的一些部分。 Use both skiprows as well as nrows in read_csv .if skiprows indicate the beginning rows and nrows will indicate the next number of rows after跳过例如。

例子:

 pd.read_csv('../input/sample_submission.csv',skiprows=5,nrows=10)

这将选择第 6 行到第 16 行的数据

_根据评论编辑_:

因为有一个列表,这个可能有帮助,即

li = [1,2,3,5,9]
r = [i for i in range(max(li)) if i not in li]
df = pd.read_csv('../input/sample_submission.csv',skiprows=r,nrows= max(li))
# This will skip the rows you dont want as well as limit the number of rows to maximum of the list.

原文由 Bharath M Shetty 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题