繁体   English   中英

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

[英]pandas read_csv and keep only certain rows (python)

我知道允许您传递带有要跳过的行索引的列表的skirows。 但是,我有要保留的行的索引。

假设我的 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)

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

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

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

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

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

我认为你需要先找到行数,像这样

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)

另一个简单的解决方案是在read_csv之后立即调用.loc 像这样的东西

index_to_keep = [2, 4]
pd.read_csv(path).loc[index_to_keep]

注意:这是一种较慢的方法,因为这里将首先将整个文件加载到内存中,然后只选择选定的行。

暂无
暂无

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

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