Python 是否为CSV文件附加标题?
我正在尝试向CSV文件添加标题 我从一个.csv文件导入数据,该文件有两列数据,每列都包含浮点数。例如:Python 是否为CSV文件附加标题?,python,csv,Python,Csv,我正在尝试向CSV文件添加标题 我从一个.csv文件导入数据,该文件有两列数据,每列都包含浮点数。例如: 11 22 33 44 55 66 现在我想为这两列添加一个标题,如: 可乐可乐 11 22 33 44 55 66 我试过这个: with open('mycsvfile.csv', 'a') as f: writer = csv.writer(f) writer.writerow(('ColA', 'ColB')) 我使用'a'来追加数据,
11 22
33 44
55 66
现在我想为这两列添加一个标题,如:
可乐可乐
11 22
33 44
55 66
我试过这个:
with open('mycsvfile.csv', 'a') as f:
writer = csv.writer(f)
writer.writerow(('ColA', 'ColB'))
我使用
'a'
来追加数据,但这会将值添加到文件的底部行,而不是第一行。有什么方法可以修复它吗?我认为您应该使用pandas读取csv文件,插入列标题/标签,并发出新的csv文件。假设您的csv文件以逗号分隔。像这样的方法应该会奏效:
from pandas import read_csv
df = read_csv('test.csv')
df.columns = ['a', 'b']
df.to_csv('test_2.csv')
在这种情况下,您不需要CSV模块。您需要
fileinput
模块,因为它允许就地编辑:
import fileinput
for line in fileinput.input(files=['mycsvfile.csv'], inplace=True):
if fileinput.isfirstline():
print 'ColA,ColB'
print line,
在上面的代码中,由于参数
inplace=True
的缘故,print
语句将打印到文件中。一种方法是读入所有数据,然后用标题覆盖文件并再次写出数据。这可能不适用于大型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)
您可以将代码中的reader.fieldnames设置为列表 就像你的情况一样
with open('mycsvfile.csv', 'a') as fd:
reader = csv.DictReader(fd)
reader.fieldnames = ["ColA" , "ColB"]
for row in fd
我知道这个问题很久以前就被问过了。但对于遇到这个问题的其他人来说,这里有一个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
对于CSV文件的第一行被标题替换的问题,我们需要添加一个选项
import pandas as pd
df = pd.read_csv('file.csv', **header=None**)
df.to_csv('file.csv', header = ['col1', 'col2'])
你需要展示一个完整的例子来演示这个问题。可能重复:我已经看到了这个问题,但我认为这与.csv文件透视图不同。没有办法只写文件的开头。解决方法是写出整个文件,在开始时使用新信息,您可以手动编辑该文件吗?使用文本编辑器或将标题写入另一个文件,不要使用python,只需使用
cat
将两者连接起来即可。你有成千上万的CSV文件需要附加标题吗?非常感谢。我在找这样的东西。很好的一个@MishalAhmed!谢谢你的评论。执行此操作时,我的第一行将替换为标题。如何在保留所有行的同时追加标题?非常感谢。