I am trying to add a header to my CSV file.
I am importing data from a .csv file which has two columns of data, each containing float numbers. Example:
11 22
33 44
55 66
Now I want to add a header for both columns like:
ColA ColB
11 22
33 44
55 66
I have tried this:
with open('mycsvfile.csv', 'a') as f:
writer = csv.writer(f)
writer.writerow(('ColA', 'ColB'))
I used 'a'
to append the data, but this added the values in the bottom row of the file instead of the first row. Is there any way I can fix it?
I know the question was asked a long time back. But for others stumbling across this question, here's an alternative to Python.
If you have access to sed (you do if you are working on Linux or Mac; you can also download Ubuntu Bash on Windows 10 and sed will come with it), you can use this one-liner:
The -i will ensure that sed will edit in-place, which means sed will overwrite the file with the header at the top. This is risky.
If you want to create a new file instead, do this
You can set reader.fieldnames in your code as list like in your case
In this case, You don't need the CSV module. You need the
fileinput
module as it allows in-place editing:In the above code, the
print
statement will print to the file because of theinplace=True
parameter.One way is to read all the data in, then overwrite the file with the header and write the data out again. This might not be practical with a large CSV file:
i think you should use pandas to read the csv file, insert the column headers/labels, and emit out the new csv file. assuming your csv file is comma-delimited. something like this should work: