如何将list字符串添加到CSV文件表头?

问题遇到的现象和发生背景

有两个CSV文件,一个是表头,只有一行,另一个CSV文件是数组转换过来的,现在要把两个文件合并,表头要在第一行,数据在后面行。我试着使用2-3种方法做,都没有做通。

用代码块功能插入代码,请勿粘贴截图

表头文件header
A B C D
数据文件
1 5 5 9
3 4 10 13
2 6 12 1000
2.5 7 11 15
3.1 8 13 16
4 7.5 14 14
3.5 6.5 11 10
3 5 12 -9999.0
-4 8.5 9.5 -9999.0
-0.1 5 10.5 -9999.9
-0.01 7 -999.25 12
代码
header = ['A','B','C','D']
with open('log.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow(header)

运行结果及报错内容

运行以后,表头添加到了尾行,不是第一行。原来查看资料,a参数代表把header写到新的csv文件中,如果有数据就添加到后面,而我希望将headers注释行添加到第一行。

我的解答思路和尝试过的方法

我也尝试到使用pd.concat函数合并两个CSV文件,合并结果不对,合并结果是把header文件一行添加到与数据行第一行处于同一行,不是添加到数据前的前面成单独一行,也是没有跑通。

我想要达到的结果

将表头header这个CSV文件添加到CSV数据文件的第一行,而且是将header CSV文件,不是手动定义。

本题代码:delimiter来控制分割符,可自己对应,本代码按一个空格处理

import csv
# 读表头
with open('header.csv',"r",newline='') as f:
    data = csv.DictReader(f,delimiter=' ')
    header = data.fieldnames
    
# 读数据
with open('data.csv',"r",newline='') as f:
    data = csv.reader(f,delimiter=' ')
    data_list = [i for i in data]

# 合并
with open('datas.csv',"w",newline='') as f:
    writer = csv.writer(f,delimiter=' ')
    writer.writerow(header) # 写入表头
    writer.writerows(data_list)  # 写入数据

img

import csv

with open('data.csv', newline='') as f:
    r = csv.reader(f, delimiter=' ')
    data = [line for line in r]
with open('data.csv', 'w', newline='') as f:
    w = csv.writer(f, delimiter=' ')
    w.writerow(['A', 'B', 'C', 'D'])
    w.writerows(data)
import pandas as pd 
import numpy as np 

header = pd.read_csv(r'header.csv')
data=pd.read_csv(r'data.csv',header=None,names=list(header.columns.values))
data.to_csv('data_changed.csv',index=False)
import csv

# 读表头csv
with open('header.csv') as f:
    cf = csv.DictReader(f, delimiter=' ')
    header = cf.fieldnames
# 读数据csv
with open('datas.csv') as f1:
    cf = csv.reader(f1, delimiter = ' ')
    datas = [i for i in cf]
    datas.insert(0, header)
# 合并表头与数据
with open('union_datas.csv', 'w', newline = '') as ff:
    cf = csv.writer(ff, delimiter = ' ')
    cf.writerows(datas)

###这个不用这么复杂吧。数据不带表头读进来,然后把表头的列名复制过来就行了吧

import pandas as pd
df1=pd.read_csv('header.csv')
df2=pd.read_excel('数据文件.csv',header=None)
df2.columns=df1.columns
df2.to_csv('合并后的文件.csv',index=0)

参考代码

import csv
filePath = 'csv文件所处的位置,包含.csv'
list1 = [1,2,3,4]
list2 = [4,2,3,4]
list3 = [5,6,7,4]
list4 = [8,2,9,6]
rows = zip(list1,list2,list3,list4)
with open(filePath, "w", newline='') as f:
    writer = csv.writer(f)
    for row in rows:
        writer.writerow(row)

可以试试用pandas实现

img

……写完表头加个回车继续写内容不就ok了……

pd.merge函数了解一下

只要是csv,那么就好说!
csv,你可以直接字符串操作搞定

参考一下

合并就好了

参考 https://blog.csdn.net/qq_40901032/article/details/123475367