我有两个DataFrames。。。
df1 是一个表,我需要从使用索引的值中提取值,这些索引是从df2中的多个列检索到的。
df1
我看到有一个函数get_value可以在给定索引和列值的情况下完美运行,但是当尝试向量化此函数以创建新列时,我失败了…
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
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可以做到这一点。
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