Fillna 更改 pandas.Series 的类型

Fillna change type of pandas.Series

一开始我有带有 int 类型列的 DataFrame。在代码中,我将类型更改为对象类型,然后应用 fillna() 方法 - 它会将类型改回。例如:

import pandas as pd
import numpy as np

data = pd.DataFrame({'a': [2, 5, 7]})
print("Initial type: ", data['a'].dtype)
data['a'] = data['a'].astype('object')
print("Setted type: ", data['a'].dtype)
print("Type after fillna:",  data['a'].fillna('no data').dtype)  

会 return:

Initial type:  int64
Setted type:  object
Type after fillna: int64

您可能注意到我的列中没有 NaN,但我需要将此过程应用于多个列。那么为什么会发生这种情况以及如何设置 fillna 使其不改变类型?

PS。使用astype不合适

您可以使用 downcast=False 来防止这种情况:

data['a'].fillna('no data', downcast=False)