我正在尝试创建一个函数来比较熊猫数据框中的三列(Versicolor,Virginica,Virginica),以将值设置为第四列。

本质上,我有两个串行的二进制分类。

首先,我需要比较Versicolor和Virginica。如果Versicolor为'1',则将Predictions行设置为'versicolor'。否则,如果Versicolor为0,则检查Virginica是'1'还是'0'。如果Virginica为“ 1”,则将“预测”行设置为“ virginica”,否则将“预测”行设置为“ setosa”。

Versicolor: [0 0 0 1 0 1 0]
Virginica:  [1 0 0 0 1 1 1]
Setosa:     [0 1 1 0 0 0 1]

Predictions: [virginica, setosa, setosa, versicolor, virginica, versicolor, virginica]

最佳答案

我认为需要DataFrame.idxmax

s = df.idxmax(axis=1).values.tolist()
print (s)
['Virginica', 'Setosa', 'Setosa', 'Versicolor', 'Virginica', 'Versicolor', 'Virginica']


对于新列:

df['new'] = df.idxmax(axis=1)


numpy解决方案:

df['new'] = df.columns[df.values.argmax(axis=1)]

08-28 00:24