如何将ndarray元素转小写后比较?解决非字符串数组报错问题
问题解决思路
你的报错原因是col1数组的元素并非全为字符串类型(或数组 dtype 不是字符串),np.char.lower只能对字符串数组执行操作,因此需要先统一转换元素类型,再做大小写处理。
具体修改方案
方案一:基于Numpy数组处理
vals = df.values col1 = vals[:, 0] # 先将数组转为字符串类型,再统一转小写 col1_lower = np.char.lower(col1.astype(str)) # 用小写后的数组匹配目标值 header_start = (col1_lower == 'name').argmax() eodf = (col1_lower == 'pass through').argmax()
方案二:直接用Pandas字符串方法(更简洁)
如果数据源是Pandas DataFrame,直接用str属性处理无需转Numpy数组,代码更简洁:
# 提取第一列并转小写 col1_lower = df.iloc[:, 0].str.lower() header_start = (col1_lower == 'name').argmax() eodf = (col1_lower == 'pass through').argmax()
补充说明
astype(str)会强制把数组内所有元素转为字符串,避免混合类型导致的操作失败;转小写后与全小写的目标字符串比较,就能兼容大小写拼写差异,准确定位目标行的位置。
内容的提问来源于stack exchange,提问作者Mike Mann
相关产品推荐
相关产品推荐

