Переиндексировать мультииндексный фрейм данных на заданном уровне c на основе другого индекса фрейма данных - PullRequest
0 голосов
/ 12 июля 2020

У меня в качестве входных данных есть мультииндексный фрейм данных [id, currency]. Я хочу, чтобы он фильтровался по индексу фрейма данных price в валюте уровня. Любой вклад приветствуется.

balance фрейм данных:

                balance
id   currency   
1    JPY        2322
     USD        w3r234
     KWN        23423
2    POPO       234234 
     USDC       3w4234
     BTC         54545
     ETH         2323412

price фрейм данных:

JPY        0.3
KWN        0.5
POPO       0.2 
USDC       0.5
ETH        0.3

Желаемый результат - масштабированный balance фрейм данных:

                balance
id   currency   
1    JPY        2322
     KWN        23423
2    POPO       234234 
     USDC       3w4234
     ETH         2323412

Мой код:

idx = price.index
balance = balance.reindex(idx, level='currency', fill_value=0).sort_index()

1 Ответ

0 голосов
/ 12 июля 2020

Доступ к значениям желаемого уровня и фильтрация на основе элементов, присутствующих в price кадре данных:

df = balance[np.in1d(balance.index.get_level_values(1), price.index)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...