如何将大熊猫数据帧转换为流数据帧?

时间:2020-10-06 13:37:40

标签: python pandas dataframe stream

enter image description here我有一个熊猫数据框,其中包含时间戳,id,产品,价格,并且有超过50列。

我想将此数据帧转换为流数据帧。例如,我想每10秒接收10个Raw或1个Raw,然后在接下来的10个Raw或1个Raw之后,直到数据帧结束。

我看过streamz库,但找不到适合的功能。

通过这种方式,我计划进行一些可视化,并进行一些功能汇总或进一步分析。

>>>df.head()

2 个答案:

答案 0 :(得分:1)

以前,我通过使用pd.date_range()创建具有所需间隔的时间,然后按照范围内的时间对原始数据帧进行切片来解决类似的问题。

例如。

times = pd.date_range(start=13:00, end=15:00, freq=T)
for t in times:
    df_instance = df[df["Time"]<t]
    Do something

答案 1 :(得分:1)

将这个小解决方案发布到您的问题中。

import pandas as pd
import schedule

df = pd.read_csv('file.csv', iterator=True, chunksize=2)

def get_next_row():
    row = next(df)
    print(row)
    # do_some_thing_with_row(row)

schedule.every(5).seconds.do(get_next_row)

while True:
    try:
        schedule.run_pending()
    except StopIteration as e:
        print("EOF")
        break

上面的代码基本上调用 get_next_row 函数,并每隔5秒间隔读取两行,并打印这些行。除了打印,您还可以添加功能。一旦达到EOF,它将引发 StopIteraton 异常。

现在,您可以根据自己的需要来调整区间和块的大小。