【问题标题】:Is there a neat/optimal method to read a constantly updated csv?是否有一种简洁/最佳的方法来读取不断更新的 csv?
【发布时间】:2022-01-30 03:33:35
【问题描述】:

我有一个非常大的 csv(>5 毫米线),我一直在测试它,但我想知道是否有一种巧妙的方法可以将其转换为数据框。为了测试,我只是在 juptyer 中使用 pd.read_csv,这样我就不必每次都重新加载它,但在生产中数据会不断更新,根本没有时间加载数据集。

当新数据进入时,我将如何更新数据框?在此先感谢您的帮助

【问题讨论】:

  • 您的源 CSV 是如何更新的?是不是完全换掉了?还是在最后附加新记录?或者可能是中间的一些行被更新了?根据这一点,可以得出一个有效的解决方案。
  • 您需要每次处理整个文件还是只处理新条目? CSV 是否有某种索引?例如数字计数还是时间戳条目?
  • @MartinEvans 只是新条目,是的,每个条目都有一个时间戳。
  • @PankajSaini 它在末尾附加了带有新时间戳的新记录
  • 我建议您在读取文件时跟踪文件位置和最新时间​​戳并将其保存到文件中。下一次首先寻找那个位置并在继续之前找到相同的时间戳

标签: python pandas csv


【解决方案1】:

很遗憾,Python 的 pandas 不提供任何此类功能
但示例代码可能是:

import os
file = "filename.csv"
size = os.path.getsize("./"+file)
data = "";
def update_data():
     global data;
     new_size = os.path.getsize("./"+file)
     if new_size != size:
           data = pd.read_csv(file)
           size = new_size
update_data()

您必须每隔一段时间调用一次 update_data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2019-01-27
    • 2011-08-08
    • 2017-03-27
    相关资源
    最近更新 更多