2016-08-09 93 views
3

Ich habe eine csv, die nur 1 Spalte von Domain-Namen enthält, die von etwa 300 bis 1500 Zeilen reichen, auf der Suche wie die folgende:einen Spaltenkopf in eine CSV in Python Hinzufügen

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

Alles was ich brauche, um Sie ist eine Spaltenüberschrift der "Domäne" hinzufügen, so wird meine csv wie folgt aussehen:

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

ich die folgenden mit Pandas versucht:

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

Dies führt zu einem csv mit der hinzugefügten Spaltenüberschrift, aber es fügte auch eine zusätzliche Spalte mit den Zeilennummern hinzu, die ich nicht will ... was mache ich falsch?

domain 
0 google.com 
1 abc.net 
2 yahoo.com 
3 cnn.com 
4 twitter.com 

Antwort

2

Sie index=False wenn to_csv schriftlich festlegen müssen die zusätzliche Spalte zu entfernen:

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

Sie Parameter names-read_csv und index=False-to_csv hinzufügen:

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

Probe:

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

Wenn du nur eine Zeile hinzufügst, brauchst du keine Pandas dafür. Hier ist ein Beispiel der normalen Python-Datei Schreiben von Modulen mit:

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

Ich denke, das ist die beste Lösung, +1 – jezrael

1

Sie header Parameter in to_csv verwenden könnten, wie Sie nur 1 Spalte in Ihrem Datenrahmen haben.

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

Sehr schöne Lösung +1 – jezrael