如何将单级索引Pandas Series值与多级索引Series按二级索引匹配相加?
基于二级索引匹配实现单级与多级Series数值相加
要实现单级索引Series与多级索引Series基于二级索引的匹配相加,核心是让单级Series的标签与多级Series的**第二级索引(level=1)**对齐,再执行元素级加法。以下是两种简洁可行的方法:
方法1:利用map直接映射二级索引对应值
通过提取多级Series的二级索引,用单级Series映射得到对应数值后直接相加:
import pandas as pd # 初始化数据 simple_index_series = pd.Series([1,2,3], index=['a', 'b', 'c']) multi_index_series = pd.Series( 0, index = pd.MultiIndex.from_product([['foo', 'bar'], ['c', 'b', 'a']]) ) # 执行匹配相加 result = multi_index_series + multi_index_series.index.get_level_values(1).map(simple_index_series) print(result)
输出结果:
foo c 3 b 2 a 1 bar c 3 b 2 a 1 dtype: int64
方法2:扩展单级Series索引后相加
先将单级Series按多级索引的二级索引重新索引,扩展为与多级Series相同的索引结构,再执行加法:
# 将单级Series按二级索引重新索引 expanded_simple = simple_index_series.reindex(multi_index_series.index.get_level_values(1)) # 重置索引为原多级索引 expanded_simple.index = multi_index_series.index # 相加得到结果 result = multi_index_series + expanded_simple
两种方法最终结果一致,可根据个人习惯选择。
内容的提问来源于stack exchange,提问作者Ramón J Romero y Vigil
相关产品推荐
相关产品推荐

