Ответ 1
import numpy as np
df1 = df.replace(np.nan, '', regex=True)
Это может помочь. Он заменит все NaN пустой строкой.
У меня есть Pandas Dataframe, как показано ниже:
1 2 3
0 a NaN read
1 b l unread
2 c NaN read
Я хочу удалить значения NaN с пустой строкой, чтобы она выглядела так:
1 2 3
0 a "" read
1 b l unread
2 c "" read
import numpy as np
df1 = df.replace(np.nan, '', regex=True)
Это может помочь. Он заменит все NaN пустой строкой.
df = df.fillna('')
или просто
df.fillna('', inplace=True)
Это заполнит na (например, NaN) ''
.
Если вы хотите заполнить один столбец, вы можете использовать:
df[column1] = df.column1.fillna('')
Если вы читаете фрейм данных из файла (например, CSV или Excel), используйте:
df.read_csv(path , na_filter=False)
df.read_excel(path , na_filter=False)
Это будет автоматически рассматривать пустые поля как пустые строки ''
Если у вас уже есть датафрейм
df = df.replace(np.nan, '', regex=True)
df = df.fillna('')
Используйте форматтер, если вы хотите отформатировать его так, чтобы он хорошо отображался при печати. Просто используйте df.to_string(... formatters
для определения пользовательского форматирования строки, без необходимости изменять ваш DataFrame или тратить память:
df = pd.DataFrame({
'A': ['a', 'b', 'c'],
'B': [np.nan, 1, np.nan],
'C': ['read', 'unread', 'read']})
print df.to_string(
formatters={'B': lambda x: '' if pd.isnull(x) else '{:.0f}'.format(x)})
Получить:
A B C
0 a read
1 b 1 unread
2 c read
Если вы конвертируете DataFrame в JSON, NaN
выдаст ошибку, поэтому в этом случае лучше всего заменить NaN
на None
.
Вот как:
df1 = df.where((pd.notnull(df)), None)
использование keep_default_na=False
должно помочь вам:
df = pd.read_csv(filename, keep_default_na=False)
Я пробовал с одним столбцом строковых значений с помощью Nan.
Чтобы удалить нан и заполнить пустую строку:
df.columnname.replace(np.nan,'',regex = True)
Чтобы удалить nan и заполнить некоторые значения:
df.columnname.replace(np.nan,'value',regex = True)
Я пробовал df.iloc также. но для этого нужен индекс столбца. поэтому вам нужно снова заглянуть в стол. просто вышеупомянутый метод сокращен на один шаг.
Попробуйте это,
добавить inplace=True
import numpy as np
df.replace(np.NaN, ' ', inplace=True)