用数值替换字符串曾经很容易,但从 pandas 2.2 开始,下面的简单方法会引发警告。现在这样做的“正确”方法是什么?
>>> s = pd.Series(["some", "none", "all", "some"])
>>> s.dtypes
dtype('O')
>>> s.replace({"none": 0, "some": 1, "all": 2})
FutureWarning: Downcasting behavior in `replace` is deprecated and will be
removed in a future version. To retain the old behavior, explicitly call
`result.infer_objects(copy=False)`. To opt-in to the future behavior, set
`pd.set_option('future.no_silent_downcasting', True)`
0 1
1 0
2 2
3 1
dtype: int64
如果我正确理解了警告,则对象 dtype 会“向下转换”为 int64。也许 pandas 希望我明确执行此操作,但我不知道如何在替换发生之前将字符串向下转换为数字类型。