有没有一种方法可以重新索引两个 Dataframe (不同级别),以便它们在所有级别上共享一个公共索引?
演示:
创建一个名为'A'的基本数据框架:
index = np.array(['AUD','BRL','CAD','EUR','INR'])
data = np.random.randint(1, 20, (5,5))
A = pd.DataFrame(data=data, index=index, columns=index)
创建名为“B”的MultiIndex数据框架:
np.random.seed(42)
midx1 = pd.MultiIndex.from_product([['Bank_1', 'Bank_2'],
['AUD','CAD','EUR']], names=['Bank', 'Curency'])
B = pd.DataFrame(np.random.randint(10,25,6), midx1)
B.columns = ['Notional']
碱性DF:
>>> Dataframe A:
AUD BRL CAD EUR INR
AUD 7 19 11 11 4
BRL 8 3 2 12 6
CAD 2 1 12 12 17
EUR 10 16 15 15 19
INR 12 3 5 19 7
MultiIndex DF:
>>> Dataframe B:
Notional
Bank Curency
Bank_1 AUD 16
CAD 13
EUR 22
Bank_2 AUD 24
CAD 20
EUR 17
目标是:
1)重新索引B,使其货币级别包括A的索引中的每种货币。B将看起来像这样(请参阅包括BRL和INR,它们的名义值并不重要):
Notional
Bank Curency
Bank_1 AUD 16
CAD 13
EUR 22
BRL 0
INR 0
Bank_2 AUD 24
CAD 20
EUR 17
BRL 0
INR 0
2)重新索引A,使其包含B索引的第一级中的每个Bank。然后A看起来像这样:
AUD BRL CAD EUR INR
Bank_1 AUD 7 19 11 11 4
BRL 8 3 2 12 6
CAD 2 1 12 12 17
EUR 10 16 15 15 19
INR 12 3 5 19 7
Bank_2 AUD 7 19 11 11 4
BRL 8 3 2 12 6
CAD 2 1 12 12 17
EUR 10 16 15 15 19
INR 12 3 5 19 7
这个应用程序将在更大的 Dataframe 上,所以我需要一个Python的方法来做到这一点。
对于上下文,最终我想乘以A和B。我试图重新索引以获得匹配的索引,因为这是一种干净的方式来乘以各种索引级别的 Dataframe :Pandas multiply dataframes with multiindex and overlapping index levels
谢谢你的帮助。
1条答案
按热度按时间dsf9zpds1#
使用
reindex
获取B使用
concat
获取A