pandas read_csv 并只保留某些行(python)

新手上路,请多包涵

我知道 skiprows 允许您传递一个列表,其中包含要跳过的行的索引。但是,我有要保留的行的索引。

假设我的 cvs 文件在数百万行中看起来像这样:

   A B
0 1 2
1 3 4
2 5 6
3 7 8
4 9 0

我想加载的索引列表只有 2,3,所以

index_list = [2,3]

skiprows 函数的输入为 [0,1,4]。但是,我只有 [2,3] 可用。

我正在尝试类似的东西:

 pd.read_csv(path, skiprows = ~index_list)

但没有运气..有什么建议吗?

谢谢,我感谢所有的帮助,

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

阅读 944
2 个回答

我想你需要先找到行数,就像 这样

 num_lines = sum(1 for line in open('myfile.txt'))

然后你需要删除 index_list 的索引:

 to_exclude = [i for i in num_lines if i not in index_list]

然后加载您的数据:

 pd.read_csv(path, skiprows = to_exclude)

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

您可以在 skiprows 参数中传入 lambda 函数。例如:

 rows_to_keep = [2,3]
pd.read_csv(path, skiprows = lambda x: x not in rows_to_keep)

您可以在 此处 的文档中阅读更多相关信息

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

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