【发布时间】:2022-01-01 08:39:25
【问题描述】:
sns.histplot(data=DS1[(DS1.TuWgt<30000) & (DS1.TuType!=1001)], x="TuWgt",hue="TuType",multiple="stack")
这就是我要运行的线路。 TuType 是一个类别。
TypeError: &: 'int' 和 'Categorical' 的操作数类型不受支持
【问题讨论】:
sns.histplot(data=DS1[(DS1.TuWgt<30000) & (DS1.TuType!=1001)], x="TuWgt",hue="TuType",multiple="stack")
这就是我要运行的线路。 TuType 是一个类别。
TypeError: &: 'int' 和 'Categorical' 的操作数类型不受支持
【问题讨论】:
& 运算符的优先级高于 < 和 != 运算符,因此您的代码是这样执行的:
sns.histplot(data=DS1[DS1.TuWgt < (30000 & DS1.TuType) != 1001], x="TuWgt",hue="TuType",multiple="stack")
...这是错误的(并且令人困惑)。
相反,在& 加入的条件周围添加括号,如下所示:
sns.histplot(data=DS1[(DS1.TuWgt<30000) & (DS1.TuType!=1001)], x="TuWgt",hue="TuType",multiple="stack")
【讨论】:
我不确定您的 dtype 是什么,但如果您确定 TuWgt 和 TuType 只是数字,请尝试将条件括在括号中:
sns.histplot(data=DS1[(DS1.TuWgt<30000) & (DS1.TuType!=1001)], x="TuWgt",hue="TuType",multiple="stack")
否则&操作优先级更高,所以你尝试将&应用到30000和DS1.TuType
【讨论】: