Pandas fillna 没有成功替换 na 值

问题描述 投票:0回答:1

尝试以下列方式填充 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 浮点数。

python python-3.x pandas
1个回答
0
投票

您可以使用

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
© www.soinside.com 2019 - 2024. All rights reserved.