Dataframe Lookup行返回Index

时间:2018-03-24 20:06:54

标签: python pandas numpy dataframe lookup

我有

的数据框
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列? (它正在返回我的其他专栏)

2 个答案:

答案 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