2016-06-20 5 views
1

Ich habe eine csv in folgendem Format:Inhalt von CSV in TXT-Dateien mit einer Datei pro Zeile schreiben?

0 | Hello 
1 | Hi 
2 | GoodDay 

Ich brauche jede Zeile in einer Textdatei zu kopieren, so wird ausgegeben:

0.txt -> Hello 
1.txt -> Hi 
2.txt -> GoodDay 

Ich versuche (bearbeitet):

df=pd.read_csv('result.csv') 
for x in df.iterrows(): 
    pd.df([x[1][1]]).to_csv(str(x[1][0])+".txt", header=False, index=False) 

Ich benutze Python und Pandas.

+0

Tags scheinen zu entsprechen, Sprachwahl und Modul sieht gut aus. Aber der Code, den du ausprobiert hast, fehlt (du benutzt bereits Python und Pandas ... ;-). Bitte füge die Frage hinzu, damit wir helfen können. Vielen Dank. – Dilettant

Antwort

1

Erster zu ndarray von values konvertieren und dann verwenden tofile:

for row in df.values: 
    #print row 
    row[1:].tofile(str(row[0])+'.txt', sep="\t", format="%s") 

Lösung mit read_csv:

import pandas as pd 
import io 

temp=u""" 
0|Hello 
1|Hi 
2|GoodDay""" 
#after testing replace io.StringIO(temp) to filename 
df = pd.read_csv(io.StringIO(temp), sep="|", header=None) 
print (df) 
    0  1 
0 0 Hello 
1 1  Hi 
2 2 GoodDay 

for row in df.values: 
    #print row 
    row[1:].tofile(str(row[0])+'.txt', sep="\t", format="%s") 

EDIT:

Anbother Lösung mit iterrows und to_csv, aber es leer hinzufügen Reihe in jedem txt Datei:

for _, s in df.iterrows(): 
    s.iloc[1:].to_csv(str(s.iloc[0]) + '.txt', index=False, header=False) 
+0

Danke !! Funktioniert wie ein Charme –

+0

Wenn meine Antwort hilfreich war, nicht vergessen [akzeptieren] (http://meta.stackexchange.com/a/5235/295067) es. Dann kannst du auch upvoten - klicke auf kleines Dreieck über "0" über der akzeptierenden Marke. Vielen Dank. – jezrael

+0

Bitte nicht "akzeptieren" vergessen. – jezrael

Verwandte Themen