首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用NaN替换Pandas Dataframe列中的Zero值?

如何用NaN替换Pandas Dataframe列中的Zero值?
EN

Stack Overflow用户
提问于 2012-11-09 02:50:40
回答 14查看 1M关注 0票数 559

我有一个Pandas Dataframe,如下所示:

代码语言:javascript
复制
itm Date                  Amount 
67    420 2012-09-30 00:00:00   65211
68    421 2012-09-09 00:00:00   29424
69    421 2012-09-16 00:00:00   29877
70    421 2012-09-23 00:00:00   30990
71    421 2012-09-30 00:00:00   61303
72    485 2012-09-09 00:00:00   71781
73    485 2012-09-16 00:00:00     NaN
74    485 2012-09-23 00:00:00   11072
75    485 2012-09-30 00:00:00  113702
76    489 2012-09-09 00:00:00   64731
77    489 2012-09-16 00:00:00     NaN

当我尝试将函数应用于Amount列时,我得到以下错误:

代码语言:javascript
复制
ValueError: cannot convert float NaN to integer

我已经尝试在数学模块中使用.isnan来应用函数,我已经尝试了pandas的.replace属性,我已经尝试了pandas 0.9中的.sparse data属性,我还尝试了在函数中使用if NaN == NaN语句。我也看过这篇文章

如何将R数据帧中的NA值替换为零?

同时看一些其他文章。我尝试过的所有方法都不起作用,或者无法识别NaN。任何提示或解决方案都将不胜感激。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2012-11-09 02:54:27

我相信

将为您完成此操作。

指向文档的链接

数据帧

以及

A系列

..。

示例:

代码语言:javascript
复制
In [7]: df
Out[7]: 
          0         1
0       NaN       NaN
1 -0.494375  0.570994
2       NaN       NaN
3  1.876360 -0.229738
4       NaN       NaN

In [8]: df.fillna(0)
Out[8]: 
          0         1
0  0.000000  0.000000
1 -0.494375  0.570994
2  0.000000  0.000000
3  1.876360 -0.229738
4  0.000000  0.000000

要仅在一列中填充NaNs,请仅选择该列。在本例中,我使用inplace=True来实际更改df的内容。

代码语言:javascript
复制
In [12]: df[1].fillna(0, inplace=True)
Out[12]: 
0    0.000000
1    0.570994
2    0.000000
3   -0.229738
4    0.000000
Name: 1

In [13]: df
Out[13]: 
          0         1
0       NaN  0.000000
1 -0.494375  0.570994
2       NaN  0.000000
3  1.876360 -0.229738
4       NaN  0.000000

编辑:

为了避免出现

,使用内置的特定于列的功能:

代码语言:javascript
复制
df.fillna({1:0}, inplace=True)
票数 887
EN

Stack Overflow用户

发布于 2016-10-06 17:10:08

不能保证切片返回视图或副本。你可以做到

代码语言:javascript
复制
df['column'] = df['column'].fillna(value)
票数 159
EN

Stack Overflow用户

发布于 2017-06-15 13:11:20

你可以使用

改变

代码语言:javascript
复制
import pandas as pd
import numpy as np

# for column
df['column'] = df['column'].replace(np.nan, 0)

# for whole dataframe
df = df.replace(np.nan, 0)

# inplace
df.replace(np.nan, 0, inplace=True)
票数 60
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13295735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档