为CSV文件附加标题?

Sak*_*ury 11 python csv

我想在我的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)


adr*_*anX 7

我认为你应该使用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)

  • 感谢您的评论。当我这样做时,我的第一行被标题替换。如何在保留所有行的同时附加标题?谢谢 (3认同)

小智 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)