我想在我的CSV文件中添加标题.
我从.csv文件导入数据,该文件有两列数据,每列包含浮点数.例:
11 22
33 44
55 66
Run Code Online (Sandbox Code Playgroud)
现在我想为两列添加标题,如:
ColA ColB
11 22
33 44
55 66
Run Code Online (Sandbox Code Playgroud)
我试过这个:
with open('mycsvfile.csv', 'a') as f:
writer = csv.writer(f)
writer.writerow(('ColA', 'ColB'))
Run Code Online (Sandbox Code Playgroud)
我曾经'a'附加过数据,但这会在文件的底行而不是第一行添加值.有什么办法可以解决吗?
Mar*_*nen 21
一种方法是读取所有数据,然后用标题覆盖文件并再次写出数据.对于大型CSV文件,这可能不实用:
#!python3
import csv
with open('file.csv',newline='') as f:
r = csv.reader(f)
data = [line for line in r]
with open('file.csv','w',newline='') as f:
w = csv.writer(f)
w.writerow(['ColA','ColB'])
w.writerows(data)
Run Code Online (Sandbox Code Playgroud)
我认为你应该使用pandas来读取csv文件,插入列标题/标签,并发出新的csv文件.假设您的csv文件是逗号分隔的.这样的事情应该有效:
from pandas import read_csv
df = read_csv('test.csv')
df.columns = ['a', 'b']
df.to_csv('test_2.csv')
Run Code Online (Sandbox Code Playgroud)
小智 7
我知道这个问题很久以前就被问到了。但是对于其他遇到这个问题的人来说,这里有一个 Python 的替代方案。
如果您有权访问 sed(如果您在 Linux 或 Mac 上工作,则可以访问;您还可以在 Windows 10 上下载 Ubuntu Bash,sed 将随附),您可以使用以下单行:
sed -i 1i"ColA,ColB" mycsvfile.csv
Run Code Online (Sandbox Code Playgroud)
-i 将确保 sed 将就地编辑,这意味着 sed 将覆盖带有顶部标题的文件。这是有风险的。
如果您想创建一个新文件,请执行以下操作
sed 1i"ColA,ColB" mycsvfile.csv > newcsvfile.csv
Run Code Online (Sandbox Code Playgroud)