2016-08-09 146 views
3

我有一個只包含1範圍約300至1500線,尋找類似的域名列一個CSV以下:添加列標題爲CSV在python

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

所有我需要做的就是添加「域」的列標題,所以我的CSV看起來像:

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

我嘗試以下使用熊貓:

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 

回答

2

你寫to_csv時卸下附加列需要設置index=False

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

您可以添加參數namesread_csvindex=Falseto_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) 
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') 
+1

我認爲這是最好的解決方案,+1 – jezrael

1

你可以使用to_csvheader參數,你有你的數據幀僅1列。

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

非常好的解決方案+1 – jezrael