一方面我有一个巨大的df
:
df1
A B C ....
2005-11-01 5.3 22 6
2005-11-02 5.4 21 4
2005-11-03 5.2 17 7
....
另一方面,我有一个较小的df具有以下结构;
df2
date
A 2005-11-02
B 2005-11-01
C 2005-11-03
我期待的是在df2
中添加一个名为price的附加列,它会从df2循环每个索引值和列值,并在df
中查找相应的价格。
所需的输出将是这样的:
date price
A 2005-11-02 5.4
B 2005-11-01 22
C 2005-11-03 7
我试过了:
prices=[]
for index,column in df2:
prices.append(df.loc[column['date'][i],index.iloc[i]])
i+=1
return prices
但是会返回不需要的输出。
ValueError: too many values to unpack (expected 2)
有人能告诉我如何根据df
df2
答案 0 :(得分:2)
使用lookup
df.lookup(df2.date,df2.index)
Out[1003]: array([ 5.4, 22. , 7. ])
分配后
df2['Value']=df.lookup(df2.date,df2.index)
df2
Out[1005]:
date Value
A 2005-11-02 5.4
B 2005-11-01 22.0
C 2005-11-03 7.0
答案 1 :(得分:2)
lookup
是正确的方法。作为参考,您处于正确的轨道上,但使用iteritems
或zip
索引和值会更好:
df2['Values'] = [df.loc[j, i] for i, j in df2['date'].iteritems()]
df2
date Values
A 2005-11-02 5.4
B 2005-11-01 22.0
C 2005-11-03 7.0