pandas 根据值从多列中的一列查找
问题描述
我有以下DataFrame:
Date best a b c d
1990 a 5 4 7 2
1991 c 10 1 2 0
1992 d 2 1 4 12
1993 a 5 8 11 6
我想做一个数据帧,如下所示:
Date best value
1990 a 5
1991 c 2
1992 d 12
1993 a 5
因此,我希望通过使用列名根据另一个行值查找一个值。例如,第二个df中1990的值应该从第一个df查找"a",第二行应该从第一个df查找"c"(=2)。
有什么想法吗?
解决方案
有一个内置的lookup
函数可以处理这种情况(按行/列查找)。我不知道它的优化程度如何,但可能比应用解决方案更快。
In [9]: df['value'] = df.lookup(df.index, df['best'])
In [10]: df
Out[10]:
Date best a b c d value
0 1990 a 5 4 7 2 5
1 1991 c 10 1 2 0 2
2 1992 d 2 1 4 12 12
3 1993 a 5 8 11 6 5
相关文章