无法对Python Pandas DataFrame导出的列表使用.find()查找字符x位置
问题根因
dbc.values返回的是二维NumPy数组,ids[0]是包含单个元素的数组对象,不是原生字符串,所以无法调用字符串专属的find方法。- 手动循环处理效率低,pandas内置了向量化的字符串处理方法,完全不需要自己写循环实现需求。
最优解决方案(无需手动循环)
直接用pandas的str处理方法按第一个x分割,取后半段即可,完整代码如下:
import pandas as pd # 读取文件时直接指定读取第12列(注意pandas列索引从0开始,确认你要的列索引是否正确) dbc = pd.read_csv(r'file1', usecols=[12]) target_col = dbc.columns[0] # 按第一个x分割,取分割后的后半段,n=1表示只分割1次,避免后面的x被截断 dbc[target_col] = dbc[target_col].str.split('x', n=1).str[-1] # 打印前5行验证结果 print(dbc.head())
如果你坚持要用find方法手动实现
需要先把列内容转为原生字符串列表再处理:
import pandas as pd dbc = pd.read_csv(r'file1', usecols=[12]) target_col = dbc.columns[0] # 转为字符串列表 str_list = dbc[target_col].astype(str).tolist() result = [] for s in str_list: x_index = s.find('x') # 你已确认每条都有x,不需要处理找不到的情况 # 如果要保留x,改成s[x_index:]即可 result.append(s[x_index+1:]) # 结果写回DataFrame dbc[target_col] = result
注意事项
- 如果列中存在非字符串类型的值,调用str方法前先加
.astype(str)统一转成字符串,避免报错。 - 如果需要保留
x本身,分割后取数逻辑对应调整即可。
内容的提问来源于stack exchange,提问作者paidsponsor
相关产品推荐
相关产品推荐

