data
считывает информацию из текстового файла и включает в себя некоторые значения nan. Я пытаюсь заменить все nan нулями, используя data.replace('nan', 0)
. Но значения nan в ряду найти невозможно.
file = 'RAO.txt'
data = pd.read_csv(file, sep = "\t", header=None, skiprows=1)
data = data.drop(data.columns[-1], axis=1)
print(data)
print(type(data.iloc[0, 2]))
data.replace('nan', 0, inplace=True)
print(data)
Вывод приведенного выше кода:
Как показано, nan
все еще существует в data
после запуска кода. кто-нибудь знает, как решить эту проблему? Спасибо!
Если Nan действительно присутствует, похоже, что данных слишком много, и значение «True» не отображается. Вы можете проверить, сколько Nan, с помощью print(data.isnull().sum())
1. Измените исходный объект: вместо:
По умолчанию fillna(), ffill() и bfill() возвращают новый объект, не изменяя исходный. Установка аргумента inplace в значение True изменяет исходный объект.
df.fillna(0, inplace=True)
2. Замените строку nan
значением:
df.replace('nan', 0, inplace=True)
Полный пример:
import pandas as pd
import numpy as np
df = pd.DataFrame({'colA':[0.6, "nan", "0.04+0.0j", np.nan],
'colB':[np.nan, "0.04+0.0j", 6, "nan"]})
df.fillna(0, inplace=True)
df.replace('nan', 0, inplace=True)
Исходный фрейм данных:
Кадр данных после fillna
и replace
:
Поскольку isnull()
не идентифицирует ячейки как NaN
, возможно, то, что вы видите как nan
, на самом деле является строкой 'nan'
.
Пожалуйста, проверьте это, набрав print(type(data.iloc[0, 2]))
и print(data.iloc[0, 2])
.
df.replace('nan', 0, inplace=True)
.df.fillna(0, inplace=True)
.Обязательно используйте inplace=True
, чтобы изменения вносились непосредственно в оригинал DataFrame
.
@WUYing Похоже, вокруг строк «nan» могут быть пробелы в начале или в конце. Чтобы убедиться в этом, вы можете напечатать конкретное значение с добавленными кавычками, чтобы четко видеть пробелы: print(f"'{data.iloc[0, 2]}'")
Спасибо! Как вы сказали,
nan
— это строка, но ее нельзя заменить на 0 наdata.replace('nan', 0, inplace=True)
. Я добавляю вывод в этот вопрос.