You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas按数值筛选报错:'str'与'int'无法比较,求解决方法

报错原因及解决方法

报错原因

你用np.array构造数据时,因为数组里同时包含字符串('a'/'b'/'c')和数值,numpy会自动把整个数组的类型统一为字符串类型。这就导致attr11和attr12列虽然看起来是数值,实际存储的都是字符串,当你用字符串和整数10做>比较时,就会触发TypeError。

正确筛选的两种方法

方法1:创建DataFrame时避免统一类型

直接传入列表而非np.array,让pandas自动识别各列的数据类型:

import pandas as pd

df1 = pd.DataFrame([
    ['a', 5, 9],
    ['b', 4, 61],
    ['c', 24, 9]],
    columns=['name', 'attr11', 'attr12'])

# 此时可直接执行筛选
result = df1[df1.attr12 > 10]
print(result)

方法2:转换已创建DataFrame的列类型

如果已经生成了原始的DataFrame,先把数值列转换为整数类型,再执行筛选:

import pandas as pd
import numpy as np

# 你的原始创建代码
df1 = pd.DataFrame(np.array([
    ['a', 5, 9],
    ['b', 4, 61],
    ['c', 24, 9]]),
    columns=['name', 'attr11', 'attr12'])

# 转换attr11和attr12为整数类型
df1[['attr11', 'attr12']] = df1[['attr11', 'attr12']].astype(int)

# 执行筛选
result = df1[df1.attr12 > 10]
print(result)

内容的提问来源于stack exchange,提问作者user3732793

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:32:06