相关疑难解决方法(0)

pandas将NaN替换为None表现出违反直觉的行为

鉴于一系列

s = pd.Series([1.1, 1.2, np.nan])
s
0    1.1
1    1.2
2    NaN
dtype: float64
Run Code Online (Sandbox Code Playgroud)

如果需要将NaN转换为无(例如,与parquets一起工作),那么我希望有

0     1.1
1     1.2
2    None
dtype: object
Run Code Online (Sandbox Code Playgroud)

我认为Series.replace这将是显而易见的方式,但这是函数返回的内容:

s.replace(np.nan, None)

0    1.1
1    1.2
2    1.2
dtype: float64
Run Code Online (Sandbox Code Playgroud)

NaN向前填充,而不是被替换.通过文档,我看到如果第二个参数是None,那么第一个参数应该是字典.基于此,我希望replace要么按预期替换,要么抛出异常.

我相信这里的解决方法是

pd.Series([x if pd.notna(x) else None for x in s], dtype=object) 
0     1.1
1     1.2
2    None
dtype: object
Run Code Online (Sandbox Code Playgroud)

哪个好.但我想了解为什么会出现这种情况,是否记录在案,或者它只是一个错误而且我必须清除我的git配置文件并在问题跟踪器上记录一个...任何想法?

python replace pandas

14
推荐指数
1
解决办法
325
查看次数

标签 统计

pandas ×1

python ×1

replace ×1