Ich lese eine CSV-Datei in einen DataFrame. Ich muss Whitespace von allen String-ähnlichen Zellen entfernen und die anderen Zellen in Python 2.7 unverändert lassen.Pythonischer/effizienter Weg Whitespace von jeder Pandas Data Frame Zelle zu entfernen, die ein stringähnliches Objekt enthält
Hier ist, was ich tue:
def remove_whitespace(x):
if isinstance(x, basestring):
return x.strip()
else:
return x
my_data = my_data.applymap(remove_whitespace)
Gibt es eine bessere oder mehr idiomatische zu Pandas Art und Weise, dies zu tun?
Gibt es einen effizienteren Weg (vielleicht, indem man die Dinge spaltenweise macht)?
Ich habe versucht, nach einer endgültigen Antwort zu suchen, aber die meisten Fragen zu diesem Thema scheinen zu sein, Whitespace von den Spaltennamen selbst zu streichen, oder davon auszugehen, dass die Zellen alle Zeichenfolgen sind.
Was würde passieren, wenn Sie x.strip() für ein Element, das keine Instanz eines Basestrings ist, machen würden? Wenn es keine Nachteile gibt, könnten Sie den Scheck entfernen und ihn durch einen Versuchs- und Ausnahme-Block ersetzen. Das könnte die Dinge beschleunigen. –
Verwenden Sie 'pandas.read_csv' (http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.read_csv.html)? Hast du 'skipinitialspace = True' probiert? –
@WarrenWeckesser Ich könnte Whitespace sowohl vor als auch nach den Daten haben, die ich in der Zelle interessiere, also denke ich, dass Skipinitialspace nur die Hälfte des Problems behebt. – deadcode