不指定列名按pandas DataFrame最后一列值筛选行及报错解决
问题原因
报错是因为当前DataFrame的最后一列是十六进制字符串格式,无法直接和整数做大小比较,需要先完成十六进制到十进制整数的转换后再执行筛选操作。
修复方案
完整实现代码如下:
import pandas as pd # 第一步:无列名指定的前提下,将最后一列从十六进制字符串转为十进制整数 df.iloc[:, -1] = df.iloc[:, -1].apply(lambda x: int(x, 16)) # 第二步:筛选最后一列数值小于4的行 filtered_df = df[df.iloc[:, -1] < 4]
兼容异常场景
如果最后一列存在非十六进制格式的无效值,可增加异常处理避免转换报错:
def hex_to_dec(x): try: return int(x, 16) except: return pd.NA df.iloc[:, -1] = df.iloc[:, -1].apply(hex_to_dec) # 筛选时自动过滤转换失败的空值记录 filtered_df = df[df.iloc[:, -1].lt(4).fillna(False)]
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

