我有一个Pandas Dataframe,如下所示:
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列时,我得到以下错误:
ValueError: cannot convert float NaN to integer
我已经尝试在数学模块中使用.isnan来应用函数,我已经尝试了pandas的.replace属性,我已经尝试了pandas 0.9中的.sparse data属性,我还尝试了在函数中使用if NaN == NaN语句。我也看过这篇文章
如何将R数据帧中的NA值替换为零?
同时看一些其他文章。我尝试过的所有方法都不起作用,或者无法识别NaN。任何提示或解决方案都将不胜感激。
发布于 2012-11-09 02:54:27
我相信
将为您完成此操作。
指向文档的链接
数据帧
以及
A系列
..。
示例:
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的内容。
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
编辑:
为了避免出现
,使用内置的特定于列的功能:
df.fillna({1:0}, inplace=True)
发布于 2016-10-06 17:10:08
不能保证切片返回视图或副本。你可以做到
df['column'] = df['column'].fillna(value)
发布于 2017-06-15 13:11:20
你可以使用
改变
至
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)
https://stackoverflow.com/questions/13295735
复制相似问题