在Python中向CSV文件添加列标题

3

我有一个 CSV 文件,其中只包含一个列的域名,行数从大约 300 到 1500 行不等,看起来类似于以下内容:

google.com
abc.net
yahoo.com
cnn.com
twitter.com

我只需要添加一个名为“domain”的列标题,这样我的 CSV 就会变成这样:
domain
google.com
abc.net
yahoo.com
cnn.com
twitter.com

我尝试使用pandas进行以下操作:

from pandas import read_csv
x = read_csv('domains.csv')
x.columns = ['domain']
x.to_csv('out.csv')

这导致生成了一个带有新列标题的csv文件,但它还添加了一个包含行号的额外列,而我并不想要这个... 我做错了什么?
    domain
0   google.com
1   abc.net
2   yahoo.com
3   cnn.com
4   twitter.com
4个回答

2

在使用 to_csv 写入时,需要设置 index=False 以删除额外的列:

x.to_csv('out.csv',index=False)

1
如果你只是添加一行,那么你不需要使用pandas。以下是使用普通的Python文件写入模块的示例:
with open('domains.csv', 'rb') as csvfile:
    rows = [r for r in csvfile]
    rows = ['domain'] + rows

with open('domains.csv', 'wb') as csvfile:
    for row in rows:
        csvfile.write(row + '\n')

1
我认为这是最好的解决方案,加一。 - jezrael

1
您可以在使用DataFrame转换为CSV文件时,在to_csv函数中使用header参数,因为您的DataFrame只有一列数据。
df = pd.read_csv(data, header=None)
df.to_csv('out.csv', header=['domain'], index=False)

0

您可以在 read_csv 中添加参数 names,并在 to_csv 中添加参数 index=False

x = read_csv('domains.csv', names=['domain'])

示例:

import pandas as pd
import io

temp=u"""google.com
abc.net
yahoo.com
cnn.com
twitter.com"""
#after testing replace io.StringIO(temp) to filename
x = pd.read_csv(io.StringIO(temp), names=['domain'])
print (x)
        domain
0   google.com
1      abc.net
2    yahoo.com
3      cnn.com
4  twitter.com

#need remove index
x.to_csv('filename',index=False)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接