用NaN替换Inf会导致AttributeError

时间:2014-04-28 15:01:16

标签: python pandas

我在熊猫身上有一个奇怪的问题。我想要将np.Inf的任何条目替换为值np.NaN。但是,当我这样做时:

df[df == np.Inf] = np.NaN

我明白了:

AttributeError: 'float' object has no attribute 'view'

具体产生错误的声明是:

df == np.Inf

我想知道问题是我在具有混合类型的Dataframe上运行上述内容(请参阅下面的dtypes)。但如果是这种情况,我怎么能自动进行这种替换呢?

In: df.dtypes
Out:
Year                            int64
Week                            int64
item_name                      object
item_uid                       object
Algorithm                      object
item Start                    float64
item 1/4                      float64
item 1/2                      float64
item 3/4                      float64
item Complete                 float64
Daily Nr Impressions          float64
date                   datetime64[ns]
Weekly rate                   float64
dtype: object

1 个答案:

答案 0 :(得分:10)

您可以使用df.replace替换np.inf值。

In [9]: import pandas as pd

In [10]: df = pd.DataFrame([1, 2, np.inf])

In [11]: df.replace(np.inf, np.nan)
Out[11]:
    0
0   1
1   2
2 NaN

[3 rows x 1 columns]