按列位置筛选DataFrame遇类型错误的解决求助
问题解决思路
错误原因
你报错的核心问题是用错了列的选取方式:df.columns[9]获取的是第9列的列名(如果列名是元组类型就会触发这个类型错误),而不是该列的实际数据,拿列名和数值96.5做比较肯定会报错。
正确代码实现
要按位置选取列的数据,应该用iloc(基于位置的索引)直接定位到对应列的所有行数据。同时因为要保留含NA的行,而NA参与比较会返回False,所以不需要额外处理NA,这些行不会被误删:
# 定义筛选条件:第9列(X)>=96.5 且 第12列(Y)>96 condition = (df.iloc[:, 9] >= 96.5) & (df.iloc[:, 12] > 96) # 删除满足条件的行 df = df.drop(df[condition].index)
注意事项
- 确认索引对应关系:Pandas的索引是从0开始计数的,如果你的“第9列”是从1开始数的(比如Excel表格里的第9列),要把代码里的
9改成8,12改成11,避免选到错误的列。 - 验证列正确性:可以先执行
print(df.iloc[:, 9].head()),确认输出的是你需要的X列数据。 - NA行保留逻辑:当X或Y为NA时,
condition会返回False,所以这些行不会被纳入删除范围,完全符合你保留重要NA行的需求。
内容的提问来源于stack exchange,提问作者JuanGS
相关产品推荐
相关产品推荐

