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)
一开始我有带有 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)