繁体   English   中英

Pandas 用空白/空字符串替换 NaN

[英]Pandas Replace NaN with blank/empty string

我有一个 Pandas 数据框,如下所示:

    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
df = df.fillna('')

要不就

df.fillna('', inplace=True)

这将用''填充 na(例如 NaN)。

如果要填充单个列,可以使用:

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

可以使用df['column1']而不是df.column1

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

这可能会有所帮助。 它将用空字符串替换所有 NaN。

如果您正在从文件(例如 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

尝试这个,

添加inplace=True

import numpy as np
df.replace(np.NaN, '', inplace=True)

使用keep_default_na=False应该可以帮助您:

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

如果您将 DataFrame 转换为 JSON, NaN会出错,因此在此用例中最好的解决方案是将NaN替换为None
方法如下:

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

我尝试使用 nan 使用一列字符串值。

要删除 nan 并填充空字符串:

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

要删除 nan 并填充一些值:

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

我也试过 df.iloc。 但它需要列的索引。 所以你需要再次查看表格。 简单地把上面的方法减少了一个步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM