我有
的数据框Alpha Bravo Charlie Final
10 20 30 30
15 25 35 25
我想创建一个带有标题的新列,它将是:
Alpha Bravo Charlie Final NewColumn
10 20 30 30 Charlie
15 25 35 25 Bravo
我尝试了这个,但它没有给出正确的结果:
df['NewColumn'] = df.lookup(df.index, df.Final)
修改
我尝试了两个答案并且它有效,但因为我有很多其他列,有没有办法可以将查找功能限制为Alpha Bravo和Charlie列? (它正在返回我的其他专栏)
答案 0 :(得分:4)
这是使用广播比较的100%numpy矢量化解决方案:
i = df.values
j = df.Final.values
df['NewColumn'] = df.columns[(i == j[:, None]).argmax(1)]
df
Alpha Bravo Charlie Final NewColumn
0 10 20 30 30 Charlie
1 15 25 35 25 Bravo
答案 1 :(得分:4)
In [84]: df['NewColumn'] = df.drop('Final',1).eq(df['Final'], axis=0).idxmax(axis=1)
In [85]: df
Out[85]:
Alpha Bravo Charlie Final NewColumn
0 10 20 30 30 Charlie
1 15 25 35 25 Bravo