错误:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

Posted

技术标签:

【中文标题】错误:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()【英文标题】:Error: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all() 【发布时间】:2019-12-19 20:51:15 【问题描述】:

我在界面 PYQT5 中遇到以下错误

ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

出现错误的代码是

x = data.drop('DrainStatnumout',axis='columns')
                y = data['DrainStatnumout']

                data.Failuer = data.Failuer.astype(int)

                #xx = data.drop(['Assembly1_Availability','Assembly2_Availability',
                                #'LaserCutting_Availability','Failuer','DrainStatnumout'],axis='columns')
                #print(xx)

                X=pd.DataFrame(x)

                Y=pd.DataFrame(y)

                X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.20)


plt.figure()
            ax1 = sns.distplot(Y_predict)
            ax2 = sns.distplot(Y_test)
            plt.axvline(np.mean(Y_predict), color='b', linestyle='dashed', linewidth=5)
            plt.axvline(np.mean(Y_test), color='orange', linestyle='dashed', linewidth=5)

            #plt.savefig('dist1.png',dpi=200,orientation='portrait')
            plt.savefig('DecisionTreeClassifier2.png')


    ValueError                                Traceback (most recent call last)
    <ipython-input-1-e0a00ff7678b> in pushButton_2_handler(self)
        588         ax2 = sns.distplot(Y_test)
        589         plt.axvline(np.mean(Y_predict), color='b', linestyle='dashed', linewidth=5)
    --> 590         plt.axvline(np.mean(Y_test), color='orange', linestyle='dashed', linewidth=5)
        591         #plt.savefig('dist1.png',dpi=200,orientation='portrait')
        592         plt.savefig('DecisionTreeClassifier2.png')

任何意见表示赞赏

【问题讨论】:

如果您使用错误消息进行搜索,您应该会获得足够的结果,让您了解问题可能是什么。包括Y_test 的最小示例 - 但我看不出该行如何产生错误。 - 请提供minimal reproducible example。 在此处查看有关错误的更多信息:***.com/questions/36921951/…。试着做 np.mean(Y_test) 看看是否有错误。 MjH np.mean(Y_test) 工作正常并给出 wright 输出值。说真的,我对这个错误感到困惑。它在界面外工作正常。 首先您可以检查变量中的内容 - print( np.mean(Y_predict) )print( np.mean(Y_test) )。此错误主要表示:"I expect one value but you give me many values. I don't know what to do with this. Use a.empty, a.bool(), a.item(), a.any() or a.all() to give me one value." 我在 pyqt5 中有 print(np.mean(Y_test)) 和 print(np.mean(Y_predict))。 np.mean(Y_predict) 给我一个值 43.110236220472444 但 np.mean(Y_test) 给我 DrainStatnumout 42.551181。数据类型:float64。 Strangly 在 python 上运行良好。 【参考方案1】:

我已取出 pd.data 框架并解决了问题。

X = data.drop('DrainStatnumout',axis='columns')

Y = data['DrainStatnumout']
data.Failuer = data.Failuer.astype(int)




                X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.20)


plt.figure()
            ax1 = sns.distplot(Y_predict)
            ax2 = sns.distplot(Y_test)
            plt.axvline(np.mean(Y_predict), color='b', linestyle='dashed', linewidth=5)
            plt.axvline(np.mean(Y_test), color='orange', linestyle='dashed', linewidth=5)

            #plt.savefig('dist1.png',dpi=200,orientation='portrait')
            plt.savefig('DecisionTreeClassifier2.png')

【讨论】:

以上是关于错误:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:在将 lambda 与 loc 一起使用时,Series 的真值不明确 [重复]

pandas 错误:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

DataFrame 列比较引发 ValueError:Series 的真值不明确。 [复制]

If-else ValueError Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

为啥我会收到 ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()

ValueError: Series 的真值不明确(API NaN 处理)