Pandas 将 NaN 值处理为“nan”和“NaN”

问题描述 投票:0回答:1

这听起来像是一个非常愚蠢的问题,但我正在从 excel 导入文件,并注意到 pandas 处理的值在 VS Code 中应该是不同的 NaN。这是下面的视觉效果...

城市 状态
“底特律” '米'
'芝加哥'
'CA'

这显然是一个小快照,但请注意,City 列中的第 3 行列为 nan,State 列中的第 2 行为 NaN。

问题是,当我使用

df.isna()
df.isnull()
时,它只会获取州列中的 NaN 值,而不是城市列中的值。不幸的是,我不能在这种情况下使用
keep_na_values = True
,因为我需要将这些值标记为 NaN,以便
.isna()
函数稍后可以识别它们。更奇怪的是excel文件中的单元格是空的,最重要的是我在Jupyter Notebook中似乎没有这个问题。

我试过使用

df.City.replace(to_replace = {'nan': 'NaN'},inplace = True) 

但没有运气。我还遇到了下面的这篇文章,它建议使用

pd.read_excel(na_values = ['nan'])
但是这不允许
.isna()
或 .isnull() 获取值。

https://stackoverflow.com/questions/50685107/pandas-dataframe-nan-values-not-replacing

有没有人知道如何让 pandas 以一种方式而不是多种方式读取此文件中的所有 NaN 值?如果无法完成,那就是它。

pandas nan xlsx
1个回答
1
投票

你确定你引用的那些nan不仅仅是一串nan吗?如果他们可以进行替换并使用 numpy

手动将它们设置为 np.nan
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Column_1' : ['A', 'nan', 'C'],
    'Column_2' : ['1', '2', np.nan]
})

df = df.replace('nan', np.nan)
df.isna()
© www.soinside.com 2019 - 2024. All rights reserved.