Индексирование со значениями в кадре данных - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть два кадра данных панд, оба проиндексированы по перекрывающимся датам, назовите их 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)])

Любой совет?

1 Ответ

0 голосов
/ 28 апреля 2018

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...