Python pandas: 是否可以在 csv 文件中读取一个新行,因为 csv 文件被另一个进程追加
Python pandas: Is it possible to read a new line in a csv file, as the csv file is appended to by another process
我有一个 Python (3.6) 脚本,它从 csv 文件读取数据到 pandas 数据帧,pandas 对从 CSV 读取的每个新行执行操作文件...
这适用于静态 CSV 文件,例如所有要处理的数据都已包含在 CSV 文件中...
我希望能够从另一个 Python 进程附加到 CSV 文件,以便可以将数据连续输入 pandas 数据帧,或者如果将数据输入到pandas 到达文件末尾,它等待将新行附加到 CSV 文件,然后继续将行读入 pandas...
这可能吗?
我是 pandas 的新手,目前我很难理解 pandas 如何与真实的 time/dynamic 数据一起使用,因为我看到的所有示例似乎都使用静态 CSV 文件作为数据源。
理想情况下,我希望能够直接从消息队列将行馈送到 pandas,但我认为这是不可能的 - 所以我在想如果我有第二个 Python 从队列接收消息然后将其作为新行附加到 CVS 文件的脚本,原始脚本可以将其读入 pandas...
我是不是误解了 pandas 是如何工作的,或者您能否就 if/how 我可以让这种事情发挥作用给出任何指示?
你可以尝试使用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
...虽然我不完全确定这将如何与非静态文件交互以及这是否是最好的解决方案...控制读取块离文件末尾足够远文件可能是一种解决方案。
您可以从队列中弹出逗号分隔值并将它们包装在数据框中。
然后您可以将该内存中的微型数据帧附加到您想要的任何其他数据帧,该数据帧也在内存中。您也可以使用 .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')
我有一个 Python (3.6) 脚本,它从 csv 文件读取数据到 pandas 数据帧,pandas 对从 CSV 读取的每个新行执行操作文件...
这适用于静态 CSV 文件,例如所有要处理的数据都已包含在 CSV 文件中...
我希望能够从另一个 Python 进程附加到 CSV 文件,以便可以将数据连续输入 pandas 数据帧,或者如果将数据输入到pandas 到达文件末尾,它等待将新行附加到 CSV 文件,然后继续将行读入 pandas...
这可能吗?
我是 pandas 的新手,目前我很难理解 pandas 如何与真实的 time/dynamic 数据一起使用,因为我看到的所有示例似乎都使用静态 CSV 文件作为数据源。
理想情况下,我希望能够直接从消息队列将行馈送到 pandas,但我认为这是不可能的 - 所以我在想如果我有第二个 Python 从队列接收消息然后将其作为新行附加到 CVS 文件的脚本,原始脚本可以将其读入 pandas...
我是不是误解了 pandas 是如何工作的,或者您能否就 if/how 我可以让这种事情发挥作用给出任何指示?
你可以尝试使用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
...虽然我不完全确定这将如何与非静态文件交互以及这是否是最好的解决方案...控制读取块离文件末尾足够远文件可能是一种解决方案。
您可以从队列中弹出逗号分隔值并将它们包装在数据框中。
然后您可以将该内存中的微型数据帧附加到您想要的任何其他数据帧,该数据帧也在内存中。您也可以使用 .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')