循环语句得到数据后保存csv只有最后一条?

 highs=[]
    lows=[]
    for row in reader:
        
        high=str(row[14])
        low=str(row[14])        
        highs.append(high)
        #print(highs)

    #print(highs)
    #去除重复的电源名称
    l1=list(set(highs))
    #print(l1)
    #names= str(input('请输入配电柜名称:'))
    
    for kWh in l1:        
        names= kWh
        if names in l1:
            #print(names)
            #print(df[df["Name"].str.contains(names)])
            #print(df["power"][df["Name"].str.contains(names)])
            #print(names+'最大读数(kW.h):',max(df["Power"][df["Name"].str.contains(names)]))
            #print(names+'最小读数(kW.h):',min(df["Power"][df["Name"].str.contains(names)]))
            a=max(df["Power"][df["Name"].str.contains(names)])
            b=min(df["Power"][df["Name"].str.contains(names)])
            Toter=a-b
            Toterc=names+'今天总用电量(kW.h):',Toter
            #print(Toterc)
            #print(names+'今天总用电量(kW.h):',Toter)
            c=[names,Toter]
            d=[[names,Toter],[22,14]]
            #print(c)
            name1=['设备名称','电度数']
            print(d[0])
            test=pd.DataFrame(columns=name1,data=d)
            test.to_csv('d:/python/Data/test2.csv',encoding = "gbk")

怎么输出csv只有最后一条记录,哪位高手帮帮我?

阅读 4.9k
1 个回答
新手上路,请多包涵

你只有最后一条数据是因为后面增加的数据把前面那一条数据覆盖掉了所以会只有最后一条
to_csv()方法mode默认为w,
而 w 模式 会清空文件再重新写入新的数据
加上mode='a',便可以追加写入数据。
a 模式 为追加写入数据就不会清空前面的数据,而是会在原文件的基础上增加新的数据

test.to_csv('d:/python/Data/test2.csv',encoding = "gbk")

改为

test.to_csv('d:/python/Data/test2.csv', mode='a', encoding = "gbk")

问题就解决了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题