附加CSV文件的头?

2024-04-27 14:35:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一个头添加到我的CSV文件中。

我正在从一个.csv文件导入数据,该文件有两列数据,每列都包含浮点数。示例:

  11   22
  33   44
  55   66

现在我想为这两列添加一个标题,如:

 ColA  ColB
  11    22
  33    44
  55    66

我试过这个:

with open('mycsvfile.csv', 'a') as f:
    writer = csv.writer(f)
    writer.writerow(('ColA', 'ColB'))

我使用'a'来追加数据,但这会将值添加到文件的底行而不是第一行。我有什么办法能修好它吗?


Tags: 文件csv数据标题示例aswithopen
3条回答

一种方法是将所有数据读入,然后用头覆盖文件并再次将数据写出。对于大型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)

我知道这个问题很久以前就被问过了。但是对于其他遇到这个问题的人来说,这里有一个替代Python的方法。

如果您有权访问sed(如果您使用的是Linux或Mac;您也可以在Windows 10上下载Ubuntu Bash,sed将随附),您可以使用这一行:

sed -i 1i"ColA,ColB" mycsvfile.csv

i将确保sed将就地编辑,这意味着sed将用顶部的头覆盖文件。这很危险。

如果要创建新文件,请执行以下操作

sed 1i"ColA,ColB" mycsvfile.csv > newcsvfile.csv

我认为您应该使用pandas读取csv文件,插入列标题/标签,并发出新的csv文件。假设csv文件是逗号分隔的。这样的做法应该管用:

   from pandas import read_csv

   df = read_csv('test.csv')
   df.columns = ['a', 'b']
   df.to_csv('test_2.csv')

相关问题 更多 >