Pandas提取列首个非空值报ufunc 'isnan'不支持输入类型如何解决
报错原因
你使用的np.isnan()仅支持数值类型输入,而目标列kst_erloes_stpfl的非空值同时包含字符串、数值两种类型,触发类型不兼容报错。
解决方法
方法1:使用Pandas内置方法(最推荐)
Pandas自带first_valid_index()方法可以直接返回第一个非空值的索引,直接取值即可:
first = df['kst_erloes_stpfl'].loc[df['kst_erloes_stpfl'].first_valid_index()] print(first) # 输出结果:WH042700
方法2:丢弃空值后取首位
先使用dropna()清除所有空值,再取结果的第一条数据:
first = df['kst_erloes_stpfl'].dropna().iloc[0]
方法3:修改原有代码的空值判断逻辑
将空值判断替换为支持多类型的pd.isna(),适配字符串、数值等混合类型的列:
import pandas as pd def not_na(value): return ~pd.isna(value) def first_not_na_value(array): return list(filter(not_na, array))[0] first = first_not_na_value(df.kst_erloes_stpfl) print(first)
内容的提问来源于stack exchange,提问作者x89
相关产品推荐
相关产品推荐

