在python中向csv添加列标题

时间:2016-08-09 12:40:25

标签: python csv pandas

我的csv只包含1列域名,范围从300到1500行,类似于以下内容:

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

我需要做的就是添加"域"的列标题。所以我的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 个答案:

答案 0 :(得分:2)

在撰写index=False时,您需要设置to_csv以删除其他列:

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

答案 1 :(得分:1)

如果你所做的只是添加一行,你真的不需要大熊猫来做这件事。下面是使用普通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')

答案 2 :(得分:1)

您可以在to_csv中使用header参数,因为您的数据框中只有1列。

df = pd.read_csv(data, header=None)
df.to_csv('out.csv', header=['domain'], index=False)

答案 3 :(得分:0)

您可以将参数names添加到read_csv,将index=False添加到to_csv

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)