Python 如何循环分类为“正”、“负”和“中性”的3个数据帧并列出它们?

Python 如何循环分类为“正”、“负”和“中性”的3个数据帧并列出它们?,python,python-3.x,pandas,class,Python,Python 3.x,Pandas,Class,我将一维概率数据作为数据帧,根据它们的值,我想将它们分类为“正”、“负”和“中性” 结果示例: 类别=[‘正’、‘中性’、‘负’、…] 这是我的剧本: for i in mle_positive, mle_negative, mle_neutral: cond = [((mle_positive.iloc[i] > mle_negative.iloc[i]).all(axis=0) and (mle_positive.iloc[i] > mle_neutral.il

我将一维概率数据作为数据帧,根据它们的值,我想将它们分类为“正”、“负”和“中性”

结果示例:

类别=[‘正’、‘中性’、‘负’、…]

这是我的剧本:

for i in mle_positive, mle_negative, mle_neutral:

        cond = [((mle_positive.iloc[i] > mle_negative.iloc[i]).all(axis=0) and (mle_positive.iloc[i] > mle_neutral.iloc[i]).all(axis=0)),
        ((mle_negative.iloc[i] > mle_positive.iloc[i]).all(axis=0) and (mle_negative.iloc[i] > mle_neutral.iloc[i]).all(axis=0)),
        ((mle_neutral.iloc[i] > mle_negative.iloc[i]).all(axis=0) and (mle_neutral.iloc[i] > mle_positive.iloc[i]).all(axis=0)),
        ((mle_neutral.iloc[i] == mle_negative.iloc[i]).all(axis=0) and (mle_neutral.iloc[i] == mle_positive.iloc[i]).all(axis=0)),
        ((mle_negative.iloc[i] == mle_positive.iloc[i]).all(axis=0) and (mle_negative.iloc[i] == mle_neutral.iloc[i]).all(axis=0)),
        ((mle_neutral.iloc[i] == mle_negative.iloc[i]).all(axis=0) and (mle_neutral.iloc[i] == mle_positive.iloc[i]).all(axis=0))]

        idx = ['positive', 'negative', 'neutral', 'neutral', 'neutral', 'neutral']

        classes = np.select(cond, idx, default = '')
错误是:

ValueError:缓冲区的维度数错误,预期为1,实际为2


很高兴,如果你们能帮忙的话。

在看不到数据的情况下,我不知道合并数据帧的确切方式,但我的想法是这样的。让我们假设您以某种方式获得数据帧,这样就有三个相关列:“mle\U正”、“mle\U中性”、“mle\U负”

那么您似乎在寻找这三列中的最大值。您可以使用idxmax实现这一点

“Class_cat”我不喜欢使用“Class”作为标题,因为它是一个特殊的词,应该看起来像:

0    mle_positive
1    mle_neutral
2    mle_positive
3    mle_negative
如果你真的想摆脱mle,你可以用replace


所以要看我是否正确地遵循代码。。。如果mle_正数大于mle_负数和mle_中性数,您希望在新列中将其标记为正数吗?添加一个输入数据样本,以及相应的预期输出。@汤姆,您是对的。这是三个不同的数据帧?是的,我添加了示例输入@Tom也应该快得多:
0    mle_positive
1    mle_neutral
2    mle_positive
3    mle_negative
df.replace({'mle_':''}, inplace=True)