Ошибка типа: только целочисленные скалярные массивы могут быть преобразованы в скалярный индекс при использовании Pandas Fillna

#python #pandas #dataframe #fillna

#python #pandas #фрейм данных #fillna

Вопрос:

Обновление: кажется, из-за .loc , если я использую исходный df из pd.read_excel, все в порядке.

У меня есть фрейм данных с Dtypes следующим образом.

Это csv для файла dataframe: CSV

Date datetime64[ns] Amout float64 Идентификатор объекта Currency объект

введите описание изображения здесь
введите описание изображения здесь

Я использовал следующий код для замены NaT, NaN

 a=np.datetime64('2000-01-01')
values={'Date':a,'Amount':0,'Currency':'0','ID':'0'}
df.fillna(value=values,inplace=True)
  

Однако я получил ошибку: ошибка типа: только целочисленные скалярные массивы могут быть преобразованы в скалярный индекс.

Я также попытался заполнить каждый столбец и не увидел сообщения об ошибке, но Nan и Nat по-прежнему остаются неизменными.

 a=np.datetime64('2000-01-01')
df[['Date']].fillna(a,inplace=True)
df[['Amount']].fillna(0,inplace=True)
df[['Currency']].fillna('0',inplace=True)
df[['ID']].fillna('0',inplace=True)
  

Мне это кажется очень странным, поскольку я успешно использовал fillna много раз.
Пожалуйста, дайте мне совет. Большое вам спасибо.

Комментарии:

1. Можете ли вы предоставить образец csv в текстовом формате вместо изображения?

2. Я только что добавил ссылку на csv-файл в верхней части моего сообщения.

3. Я пытался прочитать ваш csv, но не могу воспроизвести ошибку. На моей стороне он работает, как и ожидалось, с вашим кодом — df.fillna(value=values,inplace=True)

Ответ №1:

Я думаю NaN , что в Currency столбцах и есть строки Id , поэтому используйте:

 df = df.replace({'Currency': {'NaN': '0'}, 'ID':{'NaN': '0'}})
  

Комментарии:

1. Спасибо. Я попробую ваш путь. Но я все еще удивляюсь, почему он выдал сообщение об ошибке, когда я попробовал первый метод.

2. Я пробовал, и это не сработало. Я только что добавил ссылку на csv-файл в верхней части моего сообщения. Можете ли вы взглянуть на это?