尝试以下列方式填充 na 值:
df['column'].fillna(value:'value',inplace=True)
我打印之前和之后的值并得到以下结果:
['11', '12', '81', '21', '22', nan, '41', '71', '10', '23', '02', '20', '19', '72', '24', '53', '60', '49']
[<class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'float'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>]
['11', '12', '81', '21', '22', nan, '41', '71', '10', '23', '02', '20', '19', '72', '24', '53', '60', '49']
[<class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'float'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>]
很明显,这些值被识别为 NaN 值,但填充不是填充 nan 浮点数。
pd.to_numeric
:
value = 9999
df['column'] = pd.to_numeric(df['column'], errors='coerce').fillna(value).astype(int)
或
value = '9999' # a string
df['column'] = df['column'].str.replace('nan', value).astype(int)
输出:
>>> df
column
0 11
1 12
2 81
3 21
4 22
5 9999
6 41
7 71
8 10
9 23
10 2
11 20
12 19
13 72
14 24
15 53
16 60
17 49