2016-04-23 16 views
0

Teil 1entfernen unerwünschte Teile von Zeichenketten in einer Reihe von Spalten

Ähnlich wie diese question, aber ich habe eine Reihe von colums A genannt - J von denen alle Bindestriche anstelle von NaN auf Serie mit numerischen Werten haben (siehe Beispiel unten). Wie kann ich alle ersetzen, statt jede Spalte gleichzeitig zu durchlaufen, wie in dieser Antwort gezeigt?

Sample column A 
1000 
2000 
3000 
- 
1000 

Teil 2

Gibt es eine Möglichkeit Regex zu verwenden, um alle zu entfernen '-' '', '', von einem Datenrahmen?

+1

Das Anzeigen eines Beispiels Ihrer Daten wird Ihnen helfen zu verstehen, was Sie wollen – Nobi

+0

versuchen Sie dies: 'df.replace (r '[\ s \ -, \.] +', '', Regex = True, Inplace = True) 'oder einfach [pd.to_numeric()] verwenden (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_numeric.html#pandas.to_numeric) – MaxU

Antwort

1

Part # 1

können Sie definieren '-' ein NaN Wert zu sein, wenn in der Lese Daten zu Ihrem DataFrame. Genauer gesagt unter Verwendung von na_values in Ihrem pd.read_csv() Anruf.

Siehe docs here

Part # 2

Wie bereits von MAXU vorgeschlagen, dass Sie .replace() wie diese verwenden:

df.replace(r'[\s\-,\.]+', r'', regex=True, inplace=True) 

Beachten Sie, dass dies haben wird jede nicht Auswirkung auf Nicht-Strings.

hoffe, das hilft!

+0

Vielen Dank, das ist eine gute Lösung –

+0

Wenn Das hat dir geholfen, die Antwort zu akzeptieren oder sie zu voten oder beides. Viel Glück bei Ihrem Projekt. – Thanos

0

Sie können über die Spalten iterieren.

Ausgewählte Spalten:

>>> df = pd.DataFrame({'a': ['a-b', 'c-d'], 'b': ['x-y', 'z-z'], 'c': ['x-y', 'z-z']}) 
>>> df 
    a b c 
0 a-b x-y x-y 
1 c-d z-z z-z 
>>> for col_name in 'ab': 
     df[col_name] = df[col_name].str.replace('-', '0') 
>>> df 
    a b c 
0 a0b x0y x-y 
1 c0d z0z z-z 

Alle Spalten:

>>> df = pd.DataFrame({'a': ['a-b', 'c-d'], 'b': ['x-y', 'z-z'], 'c': ['x-y', 'z-z']}) 

>>> for col_name in df.columns: 
     df[col_name] = df[col_name].str.replace('-', '0') 
>>> df 
    a b c 
0 a0b x0y x0y 
1 c0d z0z z0z 
Verwandte Themen