【问题标题】:pandas read_csv and keep only certain rows (python)pandas read_csv 并只保留某些行(python)
【发布时间】:2017-01-13 07:53:52
【问题描述】:

我知道 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]

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

我正在尝试类似的东西:

pd.read_csv(path, skiprows = ~index_list)

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

谢谢,感谢所有帮助,

【问题讨论】:

  • 你能提供确切的代码而不是模板吗?
  • @Sreejith 希望它现在更具可读性。

标签: python pandas


【解决方案1】:

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

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

您可以在文档here 中阅读更多相关信息

【讨论】:

    【解决方案2】:

    我认为您需要先找到行数,例如this

    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 我想我必须做这样的事情。有skirows但没有一个可以读取某些行似乎很奇怪
    • @dleal 我同意你的看法。 This 也与您的问题有关。
    • 您需要输入[i for i in range(num_lines) if i not in index_list] 对吗? num_lines 不可迭代,是一个整数
    猜你喜欢
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 2015-12-22
    • 2019-06-10
    • 1970-01-01
    相关资源
    最近更新 更多