У меня есть набор из примерно 30 столбцов, которые я хочу преобразовать в int. Эти столбцы вытягиваются как string dtype, но их нужно преобразовать в int.проблема с df.replace in pandas
Когда я делаю это
df = df[['columns','to','change']].astype(int)
я
ValueError: invalid literal for long() with base 10: '\xe2\x80\xa0'
Поэтому я хочу, чтобы заменить эту строку None, а затем падение NA. Я пытаюсь это сделать.
#there are some funky values in some columns that should have numbers. Lets trash them
starting_row_count = len(df.index)
df.dropna()
current_row_count = len(df.index)
print current_row_count - starting_row_count
def strip_it(value):
#culls rotten values
if type(value) == str:
value.replace('\xe2\x80\xa0', None)
value.replace('"', None)
value.replace('=', None)
return value
df = df.astype(str)
df = df.apply(strip_it)
df.dropna()
current_row_count = len(df.index)
print current_row_count - starting_row_count
Оба оператора печати производят 0, показывая, что строки не удалены.
Я надеюсь, что это удалит эти ценности из моего DF, но я не уверен, что я делаю неправильно?
Можете ли вы использовать первые несколько строк, чтобы мы могли воспроизвести это? –
'df.dropna()' - вернуть копию фрейма данных, если вы хотите сделать это внутри, вам нужно передать аргумент inplace: 'df.dropna (inplace = True)' –