我有两个熊猫数据框,它们都由重叠的日期索引,分别称为df1和df2。
df1 = pd.DataFrame(np.random.randn(5,4), index=pd.date_range('01/02/2014',periods=5,freq='D'), columns=['a','b','c', 'd'] )
df2 = pd.DataFrame({0 : [a,b,c,d], 1 : [b,c,b,a], 2 : [c,d,a,b], 3 : [d,a,d,c]}index=pd.date_range('01/03/2014',periods=4,freq='D'))
df1
a b c d
2014-01-02 1.248568 -1.844952 -0.275825 -0.496379
2014-01-03 2.450789 0.864446 -0.163374 -0.437771
2014-01-04 0.223496 0.877333 1.580202 0.749173
2014-01-05 0.285521 -1.289847 0.273195 -0.747948
2014-01-06 -0.113029 -1.785885 0.078580 -1.156271
df2
0 1 2 3
2014-01-03 a b c d
2014-01-04 b c d a
2014-01-05 c b a d
2014-01-06 d a b c
df1的列和df2的值都是商品的不同名称。
我想创建一个新的数据帧df3,以使df3与df2具有相同的索引,并且df3的值等于df1中df2值列的值。
df3
0 1 2 3
2014-01-03 2.450789 0.864446 -0.163374 -0.437771
2014-01-04 0.877333 1.580202 0.749173 0.223496
2014-01-05 0.285521 -1.289847 0.285521 -0.747948
2014-01-06 -1.156271 -0.113029 -1.785885 0.078580
我尝试了以下操作,但无法正常工作。
df2.apply(lambda x: df1.loc[x.index,str(x)])
有什么建议吗?
最佳答案
您可以将lookup
与apply
一起使用
df2.apply(lambda x : df1.lookup(df2.index,x))
Out[469]:
0 1 2 3
2014-01-03 2.450789 0.864446 -0.163374 -0.437771
2014-01-04 0.877333 1.580202 0.749173 0.223496
2014-01-05 0.273195 -1.289847 0.285521 -0.747948
2014-01-06 -1.156271 -0.113029 -1.785885 0.078580
关于python - 用数据框中的值编制索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50071281/