Используйте значения поиска для создания нового кадра данных панд - PullRequest
0 голосов
/ 14 октября 2018

У меня есть пандас DataFrame, содержащий акции, которые выглядят следующим образом:

    Name                Ticker        Currency
0   TOTAL SA            FP FP         EUR
1   APPLE INC           AAPL US       USD
2   ALPHABET INC-CL A   GOOGL US      USD

У меня есть другой, содержащий цены:

             AAPL US   FP FP    GOOGL US
Date
2018-08-01   200.0000  55.0000  1235.0000     
2018-08-02   201.0000  56.0000  1236.0000
2018-08-03   202.0000  57.0000  1237.0000

и другой, содержащий FX:

             EUR        USD
Date
2018-08-01   1.1300     1.3000  
2018-08-02   1.1400     1.3100
2018-08-03   1.1500     1.3200

Я хочу создать новый DataFrame с теми же столбцами, что и ценовой, с курсами валют.Я хочу сделать это, используя столбец валюты в DataFrame акций для поиска и выбирая правильные значения из FX DataFrame, чтобы получить что-то вроде этого:

             AAPL US   FP FP    GOOGL US
Date
2018-08-01   1.3000    1.1300   1.3000    
2018-08-02   1.3100    1.1400   1.3100
2018-08-03   1.3200    1.1500   1.3200

Не могу найти нужную функциюэто позволяет мне сделать это.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Допустим, вы начинаете с 3 кадров данных: stocks, prices и fx.Затем вы можете использовать pd.DataFrame.loc с отображением серии: -

# create mapping from ticker to currency
s = stocks.set_index('Ticker')['Currency']

# reindex fx with data from prices, then rename columns
res = fx.loc[prices.index, prices.columns.map(s)]\
        .set_axis(prices.columns, axis=1, inplace=False)

print(res)

            AAPL US  FP FP  GOOGL US
2018-08-01     1.30   1.13      1.30
2018-08-02     1.31   1.14      1.31
2018-08-03     1.32   1.15      1.32
0 голосов
/ 14 октября 2018

Использование update

final_df = df_prices.copy()
cols = final_df.columns

final_df.columns = final_df.columns.map(df_stocks[['Ticker', 'Currency']].set_index('Ticker').to_dict()['Currency'])

final_df.update(df_fx)
final_df.columns = cols

Выходы

>>> print(final_df)

           AAPL US  FP FP   GOOGL US
Date            
2018-08-01  1.30    1.13    1.30
2018-08-02  1.31    1.14    1.31
2018-08-03  1.32    1.15    1.32
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...