我正在尝试创建一个函数来比较熊猫数据框中的三列(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)]