【问题标题】:pandas read_csv() and python iterator as inputpandas read_csv() 和 python 迭代器作为输入
【发布时间】:2016-02-28 21:09:00
【问题描述】:

我想使用 pandas read_csv() 函数,其中输入是一个 python 迭代器, 每个 next() 将带到我的文本文件的下一行。 你会建议我做什么?我想要最好的表现。
据我了解,StringIO 在这种情况下有效,但我宁愿不使用它。

顺便说一句,在那之后我使用 as_matrix() 函数来创建一个 numpy 数组。
这样做是因为它比 np.loadtxt() 函数快得多,而 np.loadtxt() 函数非常慢:(

【问题讨论】:

  • 为什么是迭代器,为什么不是文件对象?
  • @MaxNoe 因为我只能通过生成器访问 txt 文件的内容
  • 只是因为我很好奇:这个奇怪的限制从何而来?
  • @MaxNoe 我正在使用 Apache Spark,我的大文本文件分布在集群中的节点上。我想在每个节点的文本文件的每个部分上计算一些函数。我只能通过 python 的迭代器访问该部分。

标签: python numpy pandas


【解决方案1】:

你应该使用:

 pd.read_csv(StringIO("\n".join(iter)))

iter 是你的迭代器/生成器变量
这仍然比使用 np.loadtxt(iter) 更快

【讨论】:

    猜你喜欢
    • 2022-11-14
    • 2020-08-11
    • 2016-09-01
    • 2018-11-15
    • 2015-05-20
    • 2015-02-17
    • 1970-01-01
    • 2023-01-18
    • 2020-04-28
    相关资源
    最近更新 更多