Python怎么把循环得到的结果按照列依次写入到一个csv文件中?

完全新手,跪求各位大佬啊!!

import csv
with open('shiyan.csv', 'rb') as f:
    reader = csv.reader(f)
    your_list = list(reader)
    data = map(list,zip(*your_list))

    for i,data in enumerate(data):
         row = data
         row = map(eval, row)
         listA=row
         result=[float( sum(listA[i:i+10])/10) for i,num in enumerate(listA) if i%10==0]
         print result

运行结果如下,现在就是想把每次循环得到的result依次写入一个新的csv文件中,但是最好按照一列一列的写入,万分感谢啊!!!!!!!

图片描述

阅读 28.7k
5 个回答

我改了一下你的代码,实测是可以从 a.csv复制到 b.csv

import csv


def foo():

    with open('a.csv', 'r') as f:
        reader = csv.DictReader(f)
        rows = [row for row in reader]
        
        if not rows:
            return 
        
        with open('b.csv', mode='w', newline='', errors='ignore') as f2:
            for index, row in enumerate(rows):
                if index == 0:
                    f_csv = csv.DictWriter(f2, fieldnames=list(row.keys()))
                    f_csv.writeheader()
                f_csv.writerow(row)


if __name__ == '__main__':
    foo()

不懂可以再问

建议你把数据放进pandas的dataframe然后调用pandas.to_csv

在with open写入的时候加一个参数

newline=''

试试?

先把结果存入pandas 直接内置的to_csv 就搞定了.

如果只是简单的话就不用pandas了 直接这样就行

with open(r"读取文件的路径",'r') as rf,open(r"写入路径",'w',newline='') as wf:
    reader = csv.reader(rf)
    writer = csv.writer(wf)
    for row in reader:
        writer.writerow(row)
        
        

搞定

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