pandas 空字符串与na区别_关于python:Pandas用空白/空字符串替换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

稍微短一点是:

df = df.fillna('')

要不就

df.fillna('',inplace=True)

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

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

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

@Mithril - df[[column1,column2]] = df[[column1,column2]].fillna()

最好的答案!

import numpy as np

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

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

np.nan来自哪个库?我不能用它

@CaffeineConnoisseur:import numpy as np。

@CaffeineConnoisseur - 或者只是pd.np.nan如果你不想import numpy那么。

这也允许将Dict保存为.csv行中的字符串,然后使用pd.DataFrame.from_dict(eval(_string_))将其读回DataFrame

提及... inplace=True选项也很有用。

如果您正在从文件(例如CSV或Excel)中读取数据框,请使用:

df.read_csv(path , na_filter=False)

df.read_excel(path , na_filter=False)

这会自动将空字段视为空字符串''

如果您已经拥有Dataframe

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

df = df.fillna('')

read_excel()上没有na_filter pandas.pydata.org/pandas-docs/stable/

我在我的申请中使用过它。它确实存在,但由于某种原因,他们没有在文档中给出这个论点。尽管没有错误,它对我很好。

它工作,我在解析xl.parse(sheet_name, na_filter=False)中使用它

很好的答案,但我意外地downvoted,现在不能upvote。

使用格式化程序,如果您只想格式化它,以便在打印时可以很好地呈现。只需使用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

这是正确的答案

print df.fillna()本身(不做df = df.fillna())也不会修改原件。使用to_string有速度或其他优势吗?

很公平,df.fillna()就是这样!

@shadowtalker:不一定,如果OP想要将df保持为一种格式(例如,计算效率更高,或者在不必要/空/重复的字符串上保存内存),那么它只会是正确的答案,而是在视觉上呈现更多赏心悦目的。在不了解用例的情况下,我们无法肯定地说。

尝试这个,

添加inplace=True

import numpy as np

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

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

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

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

要删除nan并填充一些值:

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

我也试过df.iloc。但它需要列的索引。所以你需要再次查看表格。只需将上述方法缩小一步即可。

使用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)

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值