我的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
答案 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)