给出一系列
s = pd.Series([1.1, 1.2, np.nan])
s
0 1.1
1 1.2
2 NaN
dtype: float64
如果需要将NaN转换为None(例如,用于镶木地板),那么我想拥有
0 1.1
1 1.2
2 None
dtype: object
我认为Series.replace
是这样做的明显方式,但这是函数返回的内容:
s.replace(np.nan, None)
0 1.1
1 1.2
2 1.2
dtype: float64
NaN被向前填充,而不是被替换。通过docs,我看到如果第二个参数为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
哪个好。但是我想了解为什么会发生这种行为,无论它是有记录的,还是仅仅是一个错误,我都必须清除git配置文件并将其记录在问题跟踪器上...有什么想法吗?
答案 0 :(得分:6)
此行为在$import = Get-Content C:\bookmarks.html -Raw
$newbody = Get-Content C:\newbookmarks.html
$remove = "(?<=$([regex]::Escape('<DT><H3 ADD_DATE="1544626193" LAST_MODIFIED="1546498855">Import-IE</H3>'))).*?(?=</DL>)"
$import -replace "(?s)$remove","$newbody"
参数的文档中:
method
因此,在您的示例中,method : {‘pad’, ‘ffill’, ‘bfill’, None}
The method to use when for replacement, when to_replace is a scalar, list or tuple and value is None.
是标量,而to_replace
是value
。根据{{3}}的文档,默认情况下该方法为None
:
pad