我有以下Multiindex pandas dataframe:
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
index = pd.MultiIndex.from_tuples([('X', 'a', 'I'), ('X', 'b', 'II'), ('Y', 'a', 'III')], names=['Level1', 'Level2', 'Level3'])
df = pd.DataFrame(data, index=index)
A B
Level1 Level2 Level3
X a I 1 4
b II 2 5
Y a III 3 6
我希望看到以下结果,用'-'连接Level 1和Level2,同时保留Level 3的值:
A B
CombinedLevel Level3
X - a I 1 4
X - b II 2 5
Y - a III 3 6
我已经尝试过使用set_index()和lambda函数的各种解决方案,但它们似乎要么将整个索引重置为最终Level 1中的值,要么抛出KeyErrors。我已经考虑过将索引解栈,将它们跨列连接起来,然后再次堆叠它们,但我沿着“KeyError:“请求的级别(CombinedLevel)与索引名称”不匹配。
3条答案
按热度按时间e3bfsja21#
您始终可以转换
to_frame
以使操作更容易,然后使用MultiIndex.from_frame
转换回来:或者使用
get_level_values
和from_arrays
:或者:
输出量:
lf5gs5x22#
请在计算
df
后尝试添加此脚本。rdrgkggo3#
使用
MultiIndex.from_tuples
和f-strings
的列表比较:或者将
MultiIndex.get_level_values
与MultiIndex.from_arrays
一起使用: