[英]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.