首页 > 解决方案 > 如何更换带有 np.nan 的值——使用 Pandas read_pickle() 导入的文件

问题描述

Pandas Data frame通过pickle ('P')使用pd.read_pickle(). 下面是数据框的头部信息。看起来<NA>值是在没有数据的地方创建的。我想将这些<NA>值转换为np.nan.

sequels = pd.read_pickle('D:\Learning\Datacamp\Datasets/sequels.p')
print(sequels.head())
      id         title  sequel
0  19995        Avatar    <NA>
1    862     Toy Story     863
2    863   Toy Story 2   10193
3    597       Titanic    <NA>
4  24428  The Avengers    <NA>

我尝试使用一些方法 -sequels.replace('<NA>', np.nan), sequels.fillna(np.nan)并使用正则表达式 - sequels.replace(r'^\s*$', np.nan, regex=True)

在所有这些情况下,这些值都不会被替换。有什么建议么?

标签: pandasnumpypickle

解决方案


如果将缺失值替换NaN为浮点数 get np.nan,因为在原始列中使用整数 na

df['sequel'] = df['sequel'].astype('float')
print (df)
      id         title   sequel
0  19995        Avatar      NaN
1    862     Toy Story    863.0
2    863   Toy Story 2  10193.0
3    597       Titanic      NaN
4  24428  The Avengers      NaN

解决方案replace

df['sequel'] = df['sequel'].replace({pd.NA: np.nan})

print (df)
      id         title   sequel
0  19995        Avatar      NaN
1    862     Toy Story    863.0
2    863   Toy Story 2  10193.0
3    597       Titanic      NaN
4  24428  The Avengers      NaN

或者:

 df['sequel'].replace({pd.NA: np.nan}, inplace=True)

推荐阅读