我有两个 DataFrames 。 . .df1
是一个表,我需要从使用索引、从 df2 中的多列检索的列对中提取值。
我看到有一个函数 get_value
在给定索引和列值时可以完美运行,但是当尝试向量化这个函数以创建一个新列时,我失败了......
df1 = pd.DataFrame(np.arange(20).reshape((4, 5)))
df1.columns = list('abcde')
df1.index = ['cat', 'dog', 'fish', 'bird']
a b c d e
cat 0 1 2 3 4
dog 5 6 7 8 9
fish 10 11 12 13 14
bird 15 16 17 18 19
df1.get_value('bird, 'c')
17
现在我需要做的是在
df2
上创建一个完整的新列——当基于索引对 df1
进行索引时,来自 animal
的列对,letter
中指定的 df2
列有效地矢量化了上面的 pd.get_value
函数。df2 = pd.DataFrame(np.arange(20).reshape((4, 5)))
df2['animal'] = ['cat', 'dog', 'fish', 'bird']
df2['letter'] = list('abcd')
0 1 2 3 4 animal letter
0 0 1 2 3 4 cat a
1 5 6 7 8 9 dog b
2 10 11 12 13 14 fish c
3 15 16 17 18 19 bird d
导致 。 . .
0 1 2 3 4 animal letter looked_up
0 0 1 2 3 4 cat a 0
1 5 6 7 8 9 dog b 6
2 10 11 12 13 14 fish c 12
3 15 16 17 18 19 bird d 18
最佳答案
有一个名为 lookup
的函数正是这样做的。
df2['looked_up'] = df1.lookup(df2.animal, df2.letter)
df2
0 1 2 3 4 animal letter looked_up
0 0 1 2 3 4 cat a 0
1 5 6 7 8 9 dog b 6
2 10 11 12 13 14 fish c 12
3 15 16 17 18 19 bird d 18
关于python - Pandas 数据框上的矢量化查找,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46114809/