Czytam plik CSV w DataFrame. Muszę usunąć białe znaki ze wszystkich podobnych do łańcucha komórek, pozostawiając pozostałe komórki w niezmienionej postaci w Pythonie 2.7.Pythoniczny/efektywny sposób na usunięcie białych znaków z każdej komórki ramki danych Pandas, która ma w niej obiekt podobny do łańcucha znaków
Oto co robię:
def remove_whitespace(x):
if isinstance(x, basestring):
return x.strip()
else:
return x
my_data = my_data.applymap(remove_whitespace)
Czy jest lepszy lub bardziej idiomatycznych do Pandy sposób to zrobić?
Czy jest bardziej efektywny sposób (być może robiąc rzeczy w mądrych kolumnach)?
Próbowałem już znaleźć ostateczną odpowiedź, ale większość pytań na ten temat brzmi: jak usunąć białe znaki z nazw kolumn lub założyć, że wszystkie komórki są ciągami.
Co by się stało, gdybyś zrobił x.strip() na elemencie, który nie jest instancją łańcucha bazowego? Jeśli nie ma żadnych wad, możesz usunąć test i zastąpić go blokiem try i except. To może przyspieszyć sytuację. –
Czy używasz 'pandas.read_csv' (http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.read_csv.html)? Czy próbowałeś 'skipinitialspace = True'? –
@WarrenWeckesser Mogę mieć białe spacje zarówno przed jak i po danych, na których mi zależy w komórce, więc myślę, że skipinitialspace naprawia tylko połowę problemu. – deadcode