Ich habe eine große TXT mit Daten in schlechten Formaten. Ich möchte einige Zeilen entfernen und den Rest der Daten in Gleitkommazahlen konvertieren. Ich möchte Zeilen entfernen, mit 'X'
oder 'XX'
, Der Rest sollte ich konvertieren zu schweben, Zahl wie 4;00.1
sollte die Datei sieht aus wie diese Probe zu 4.001
umgewandelt werden:Entfernen bestimmter Zeilen von DataFrame in Python Pandas
0,1,10/09/2012,3:01,4;09.1,5,6,7,8,9,10,11
1,-0.581586,11/09/2012,-1:93,0;20.3,739705,,0.892921,5,,6,7
2,XX,10/09/2012,3:04,4;76.0,0.183095,-0.057214,-0.504856,NaN,0.183095,12
3,-0.256051,10/09/2012,9:65,1;54.9,483293,0.504967,0.074442,-1.716287,7,0.504967,0.504967
4,-0.728092,11/09/2012,0:78,1;53.4,232247,4.556,0.328062,1.382914,NaN,4.556,4
5,4,11/09/2012,NaN,NaN,6.0008,NaN,NaN,NaN,6.000800,6.000000,6.000800
6,X,11/09/2012,X,X,5,X,8,2,1,17.000000,33.000000
7,,11/09/2012,,,,,,6.000000,5.000000,2.000000,2.000000
8,4,11/09/2012,7:98,3;04.5,5,6,3,7.000000,3.000000,3.000000,2
9,6,11/09/2012,2:21,4;67.2,5,2,2,7,3,8.000000,4.000000
ich es zu Datenrahmen gelesen und wählen Reihen
from pandas import *
from csv import *
fileName = '~/data.txt'
colName = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l']
df = DataFrame(read_csv(fileName, names=colName))
print df[df['b'].isin(['X','XX',None,'NaN'])].to_string()
Ein Ausgang von den letzten mir letzte Zeile gibt nur:
>>> print df[df['b'].isin(['X','XX',None,'NaN'])].to_string()
b c d e f g h i j k l
a
2 XX 10/09/2012 3:04 4;76.0 0.183095 -0.057214 -0.504856 NaN 0.183095 12 NaN
6 X 11/09/2012 X X 5.000000 X 8.000000 2 1.000000 17 33
Does nicht nimm Zeile 7 auf, und ich würde gerne alle df nicht nur eine Spalte durchgehen (Originaldatei ist sehr groß).
Im Moment für die Konvertierung verwende ich wie folgt, aber müssen unerwünschte Zeilen zuerst entfernen, um es auf alle df anzuwenden.
convert1 = lambda x : x.replace('.', '')
convert2 = lambda x : float(x.replace(';', '.'))
newNumber = convert2(convert1(df['e'][0]))
Nach Reihen der Wahl Ich mag würde sie von df zu entfernen, versuche ich df.pop()
aber es funktioniert nur für die Spalte nicht für Zeilen. Ich versuche Reihen zu benennen, aber kein Glück. In dieser speziellen .txt sollte ich mit einem neuen df aus den Zeilen [0,3,8,9] mit der Spalte 'c' als Datumsformat, 'd' als Zeitformat und dem Rest als Float abschließen. Ich versuche es jetzt schon eine ganze Weile herauszufinden, weiß aber nicht, wo ich mich hinbewegen soll, ist es möglich in Pandas (wahrscheinlich sollte es sein) oder muss ich auf ndarray
oder irgendetwas anderes wechseln? Vielen Dank für Ihre Beratung
Da ich einen neuen Benutzer bin, würde ich was wissen, ist falsch mit dieser Frage, dass es abgelehnt wird? – tomasz74