2017-03-24 2 views
2

Ich möchte eine bestimmte Zeile aus einer Datei extrahieren. Es gibt viele Dateien, die zu vielen Zeilen/Werten führen. Ich möchte alle Werte in einen Pandas DataFrame einfügen.Werte an die Pandas-Serie anhängen

Dazu sollen die Zeilen "11" in eine Spalte "11" (Serie), die Zeilen "22" in die nächste Spalte/Serie "22" und die Zeilen "33" in die Spalte "11" eingefügt werden die letzte Spalte/Serie.

Ziel:

  11  22  33 
file1 0.4  4.1 6.2 
file2 0.5  4.3 6.1 
file3 0.6  4.6 6.1 
file4 0.8  4.1 6.7 
...  ...  ... ... 

Jetzt habe ich gerade:

import os 
cwd=os.getcwd() 
import pandas as pd 
columns=["11","22","33"] 
df=pd.DataFrame(columns=columns) 
filenames=[] 
for files in os.listdir(cwd): 
    if files.startswith("file"): 
     os.chdir(files) 
     cwd2=os.getcwd() 
     filenames.append(files)  
     for files2 in os.listdir(cwd2): 
      if files2.startswith("Ausgab"): 
       os.chdir(files2) 
       o=open("yoyo.txt","r") 
       i=0 
       for line in o: 
        i=i+1 
        if i==1: 
         df["11"].append(line[15:40]) 
        if i==2: 
         df["22"].append(line[15:40]) 
        if i==3: 
         df["33"].append(line[15:40]) 

     os.chdir(cwd1) 
df=pd.DataFrame(columns=columns,index=filenames) 
df.to_csv("ttttest.csv") 

Die Dateiliste funktioniert, so dass die Spalten "11", "22", "33". Aber der Teil mit df ["11"]. Append funktioniert nicht. Wie kann ich einer Pandas-Serie Werte aus einer Schleife hinzufügen?

Antwort

1

Ich habe einen Weg, der funktioniert. Es gab eine andere Diskussion, die ich jetzt nicht finden kann, etwas ähnliches zu tun, und das war eine der besseren Antworten.

stattdessen einen Datenrahmen beginnen machen, können Sie ein Wörterbuch von Listen machen - in Ihrem Fall so etwas wie

d = {"11": [],"22": [],"33":[]} 

, wenn Sie kommen, um die Daten, die Sie tun etwas anhängen wie:

d["11"].append(line[15:40]) 

oder vielleicht

d["11"] += line[15:40] 

(ich bin nicht klar, was Ihre Daten im Einklang sein - wenn es ein String Ich hätte gedacht, Sie teilen möchten, und dann die ganze Liste hinzufügen?)

schließlich können Sie Ihre Datenrahmen machen, indem df = pd.DataFrame(d)

+0

Es funktionierte ruft alle Ihre Listen sind gleich lang unter der Annahme, danke so sehr – Almizar