Панды заменить Нан с пустой/пустая строка


У меня есть панда 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
5 90

5 ответов:

import numpy as np
df1 = df.replace(np.nan, '', regex=True)

Это может помочь. Он заменит все NaNs пустой строкой.

немного короче-это:

df = df.fillna('')

это заполнит na (например, NaN) с ".

изменить: Если вы хотите заполнить один столбец, вы можете использовать:

df.column1 = df.column1.fillna('')

если Вы читаете фрейм данных из файла (скажем, CSV или Excel), то используйте:

  1. df.read_csv(path , na_filter=False)
  2. df.read_excel(path , na_filter=False)

это автоматически будет рассматривать пустые поля как пустые строки ' '


если у вас уже есть фрейм данных

  • df = df.replace(np.nan, '', regex=True)
  • df = df.fillna('')

Если вы конвертируете фрейм данных в Json: НАНА будет давать ошибки, поэтому лучше всего в данном случае использовать, чтобы заменить НАН ни с кем. Вот как: df1 = df.где((др.notnull (df)), None)

использовать formmatter. Кроме того, вы не изменяете свой фрейм данных:

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