为何突然出现TypeError: 'int'不可下标错误?卡方检验引入后代码失效
解决 TypeError: 'int' object is not subscriptable 问题
问题场景
在Kaggle Notebook中编写可视化代码,从.csv文件读取数据绘制分布图时,持续收到错误:TypeError: 'int' object is not subscriptable,错误指向代码第2行。
报错代码
fig, ax = plt.subplots(2,2, figsize=(12,12)) sns.histplot(df['Satisfaction'], kde=True, ax = ax[0,0]) plt.ylabel("Count") sns.histplot(df['Performance_evaluation'], kde=True, ax = ax[0,1]) sns.histplot(df['Monthly_hours'], kde=True, ax = ax[1,0])
问题原因
排查后发现,之前在卡方检验的代码中,将df这个变量名用来定义整数类型的自由度(degrees of freedom),覆盖了原本用来指代DataFrame的df变量。当后续代码执行df['Satisfaction']时,实际是在对一个整数做下标访问,因此触发了'int' object is not subscriptable的错误。
解决方法
修改卡方检验中自由度的变量名,避免和DataFrame的变量名冲突。比如把自由度变量命名为degrees_of_freedom或者chi_df,让df重新恢复为DataFrame的引用,即可解决该错误。
内容的提问来源于stack exchange,提问作者AMch
相关产品推荐
相关产品推荐

