如何用 np.nan 替换 <NA> 值——使用 Pandas read_pickle() 导入的文件
How to replace <NA> values with np.nan -- file imported using Pandas read_pickle()
我通过使用 pd.read_pickle()
导入 pickle ('P')
文件创建了一个 Pandas Data frame
。下面是数据框的头部信息。看起来 <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)
.
在所有这些情况下,值都不会被替换。有什么建议吗?
如果将缺失值 NaN
替换为浮点数得到 np.nan
,因为在原始列中使用 integer 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)
另一个选项是使用替换:
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>
df['sequel'].replace({'<NA>': np.nan}, inplace = True)
我通过使用 pd.read_pickle()
导入 pickle ('P')
文件创建了一个 Pandas Data frame
。下面是数据框的头部信息。看起来 <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)
.
在所有这些情况下,值都不会被替换。有什么建议吗?
如果将缺失值 NaN
替换为浮点数得到 np.nan
,因为在原始列中使用 integer 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)
另一个选项是使用替换:
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>
df['sequel'].replace({'<NA>': np.nan}, inplace = True)