Python pandas:是否可以读取 csv 文件中的新行,因为 csv 文件被另一个进程附加到



我有一个 Python (3.6) 脚本,它将数据从 csv 文件读取到熊猫数据帧中,熊猫对从 CSV 文件读取的每个新行执行操作......

这适用于静态 CSV 文件,例如,所有要处理的数据都已包含在 CSV 文件中的文件......

我希望能够从另一个 Python 进程附加到 CSV 文件,以便数据可以连续输入熊猫数据帧,或者如果将数据馈送到熊猫的进程到达文件末尾,它会等待新行附加到 CSV 文件,然后继续将行读取到熊猫中......

这可能吗?

我是熊猫的新手,目前,我很难理解如何将熊猫与实时/动态数据一起使用,因为我看到的所有示例似乎都使用静态 CSV 文件作为数据源。

理想情况下,我希望能够直接从消息队列将行馈送到熊猫中,但我认为这是不可能的 - 所以我在想,如果我有第二个 Python 脚本从队列接收消息,然后将其作为新行附加到 CVS 文件,原始脚本可以将其读入熊猫......

我是否误解了熊猫的工作原理,或者您能否就我是否/如何让这种事情起作用提供任何指示?

您可以从队列中弹出逗号分隔的值,并将它们包装在数据帧中。

然后,您可以获取内存中的微型数据帧,并将其附加到所需的任何其他数据帧,这些数据帧也在内存中。您也可以将其写出到带有.to_csv('whatever', mode='a')的文件中。

最好不要首先写入csv并为其保留字符串数组,但是由于这更直接地回答了您的问题:

big_df = pandas.read_csv('file.csv')
def handle_csv(csv):
mini_df = pd.DataFrame([sub.split(",") for sub in csv])
big_df.append(mini_df)
mini_df.to_csv("somefile", mode='a')

你可以尝试使用 pandas read_csv() 函数来读取小块的大 csv 文件,基本代码写如下:

import pandas as pd
chunksize = 100
for chunk in pd.read_csv('myfile.csv', chunksize=chunksize):
print(chunk)

请参阅此处了解更多信息:http://pandas.pydata.org/pandas-docs/stable/io.html#io-chunking

。虽然我不完全确定这将如何与非静态文件交互,以及这是否是最好的解决方案......控制读取块离文件末尾足够远可能是一种解决方案。

最新更新