Pandas Replace NaN with blank/empty string

此生再无相见时 提交于 2019-11-28 15:09:24
nEO
import numpy as np
df1 = df.replace(np.nan, '', regex=True)

This might help. It will replace all NaNs with an empty string.

fantabolous

Slightly shorter is:

df = df.fillna('')

or just

df.fillna('',inplace=True)

This will fill na's (e.g. NaN's) with ''.

If you want to fill a single column, you can use:

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

If you are reading the dataframe from a file (say CSV or Excel) then use :

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

This will automatically consider the empty fields as empty strings ' '


If you already have the Dataframe

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

Use a formatter, if you only want to format it so that it renders nicely when printed. Just use the df.to_string(... formatters to define custom string-formatting, without needlessly modifying your DataFrame or wasting memory:

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)})

To get:

   A B       C
0  a      read
1  b 1  unread
2  c      read
Dinesh Khetarpal

If you are converting DataFrame to JSON, NaN will give error so best solution is in this use case is to replace NaN with None.
Here is how:

df1 = df.where((pd.notnull(df)), None)

using keep_default_na=False should help you:

df = pd.read_csv(filename, keep_default_na=False)

I tried with one column of string values with nan.

To remove the nan and fill the empty string:

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

To remove the nan and fill some values:

df.columnname.replace(np.nan,'value',regex = True)

I tried df.iloc also. but it needs the index of the column. so you need to look into the table again. simply the above method reduced one step.

Try this,

add inplace=True

import numpy as np
df.replace(np.NaN, ' ', inplace=True)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!