大Pandas多指标连载

2024-04-19 19:33:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个多索引的多系列,我想将它们组合成一个数据帧,将它们连接到公共索引名称(和广播值)。设置就像

import pandas as pd
a=pd.Series([12,13,14,15], index=pd.MultiIndex.from_tuples([(1,1),(1,2),(2,1),(2,2)], names=["i", "j"]))
b=pd.Series([21,22], index=pd.MultiIndex.from_tuples([(1,),(2,)], names=["i"]))

我怎样才能得到结果

^{pr2}$

你能建议一下如何得到这个结果吗?理想情况下,这也应该适用于两个以上的系列。在


Tags: 数据fromimport名称pandasindexnamesas
2条回答

这是有记载的here

pd.merge(a.reset_index(), b.reset_index(), on='i')

如果需要,可以使用set_index设置索引。或者:

^{pr2}$

由于pandas 0.24.0,可以使用重叠索引级别将多索引数据帧彼此合并。根据the release notes

index_left = pd.MultiIndex.from_tuples([('K0', 'X0'), ('K0', 'X1'),
                                        ('K1', 'X2')],
                                        names=['key', 'X'])

left = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                     'B': ['B0', 'B1', 'B2']}, index=index_left)

index_right = pd.MultiIndex.from_tuples([('K0', 'Y0'), ('K1', 'Y1'),
                                        ('K2', 'Y2'), ('K2', 'Y3')],
                                        names=['key', 'Y'])

right = pd.DataFrame({'C': ['C0', 'C1', 'C2', 'C3'],
                      'D': ['D0', 'D1', 'D2', 'D3']}, index=index_right)

left.join(right)

输出:

^{pr2}$

相关问题 更多 >