如何为带MultiIndex的DataFrame添加索引拼接字符串列
解决方法:在保留MultiIndex的前提下新增拼接列
嘿,这事儿好办,给你两种简洁的实现方式,都不会动到你现有的MultiIndex结构:
方法一:直接提取索引层级拼接
适合你这种只有两个层级的简单场景,直接提取每个层级的值转成字符串后拼接:
import pandas as pd # 先还原你的初始DataFrame df = pd.DataFrame([[1,2,3], [11,22,33]], columns = ['A', 'B', 'C']) df.set_index(['A', 'B'], inplace=True) # 新增列D:拼接索引A和B的字符串形式 df['D'] = df.index.get_level_values('A').astype(str) + '_' + df.index.get_level_values('B').astype(str)
执行后你就能得到想要的结果:
C D A B 1 2 3 1_2 11 22 33 11_22
方法二:用index.map批量处理(更通用)
如果以后你的MultiIndex层级变多,这种方法更灵活,不用逐个提取层级:
# 遍历每个索引元组,把元组里的元素转成字符串后用下划线连接 df['D'] = df.index.map(lambda x: '_'.join(map(str, x)))
这个逻辑不管你有2个还是N个索引层级,都能自动把所有层级拼接成层级1_层级2_..._层级N的格式,实用性更强~
两种方法都不会修改原有的MultiIndex结构,只是新增一列,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Night Walker
相关产品推荐
相关产品推荐

