对于一个项目,我有发送有效载荷的设备,我应该将它们存储在一个本地文件中,但是我有内存限制,我不想存储超过2000个数据行。同样,由于内存限制,我无法拥有数据库,所以我选择将数据存储在csv文件中。我尝试使用open('output.csv', 'r+') as f:;我将行附加到csv的末尾,每次使用sum(1 for line in f)时都必须检查长度,以确保不超过2000。当我到达2000行时,问题就开始了,理想情况下,我希望删除第一行并在末尾添加另一行,或者从文件的开头开始写入行,并覆盖旧行而不删除每一行,但我不知道该如何做。我试着使用open('output.csv', 'w+')或open('output.csv', 'a+'),但是它将在只写一行的同时删除w+的所有内容,而a+则会继续添加到末尾。另一方面,我不能再用两者来计算行数了。请帮助我从开头开始重写每一行,还是从开头删除一行,并将一行追加到末尾,您能帮助我吗?如果您可以告诉我是否有比csv文件更好的chioce来存储许多数据,或者我可以使用更好的方法来计算行数,我也会进行研究。
发布于 2022-02-28 11:59:09
这会有帮助的。见内联注释
import pandas as pd
allowed_length = 2 # Set it to the required value
df = pd.read_csv('output.csv') #Read your csv file to df
row_count = df.shape[0] #Get row count
df.loc[row_count] = ['Fridge', 15] #Insert row at end of df. In my case it has only 2 values
#if count of dataframe is greater or equal to allowed_length, the delete first row
if row_count >= allowed_length:
df = df.drop(df.head(1).index)
df.to_csv('output.csv', index=False)https://stackoverflow.com/questions/71294252
复制相似问题