pandas TypeError:使用fillna(method='ffill')时未找到匹配的签名

7uhlpewt  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(190)

问题

我想用fillna(method='ffill')替换数据框中的NaN值(* 用以前的非空值填充数据框或系列中缺少的值 *),但是下面的代码示例导致错误。

df['a'] = df['a'].fillna(method='ffill')
File "pandas/_libs/algos.pyx", line 604, in pandas._libs.algos.__pyx_fused_cpdef
TypeError: No matching signature found

调试

我最初认为,df中的数据是错误的,因为No matching signature found是信号,没有NaN值,所以我打印了所有值和它们出现的计数,看起来应该有一些NaN值。

print(df['a'].value_counts(dropna=False))

# Output
NaN       1417
1733.0       1
1150.0       1
1168.0       1
...
1671.0       1
1706.0       1
1132.0       1

我还尝试使用以下代码确定是否存在任何NaN

print(f"isnull?: {df['a'].isnull().values.any()}")

# Output
isnull?: True

可能有什么问题

0md85ypi

0md85ypi1#

解决方案

我仍然不知道为什么,但我发现在我的代码中其他fillna方法的出现正在处理float32类型的数据。这个数据集的类型是float16。所以我尝试将类型更改为float32,它解决了这个问题

df = df.astype({
     'a': 'float32'
})

相关问题