如何通过在 |
处拆分第二层来创建新层?
初始索引:
MultiIndex(levels=[['A', 'B', 'C', 'D'], ['a|a_unit', 'b|b_unit', 'c|c_unit']],
codes=[[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
期望的输出:
我尝试过的:
# plan was to create a new column and use set_index
df.columns.to_frame().iloc[:,1].str.split('|')
编辑: 我的方法不起作用的原因如下:
最初,我将索引的级别 1 中的值用“|”分隔,为了简化此示例,我删除了 *
。没有启动一切正常,但启动后,我得到了一个 re
错误:
re.error: nothing to repeat at position 0
拥有合适的测试用例有时真的很棘手。
最佳答案
你可以试试:
s=df.columns.to_frame().iloc[:,1].str.split('|')
final=(pd.DataFrame(data=df.values,columns=df.columns.get_level_values(0))
.T.set_index([s.str[0],s.str[1]],append=True).T)
或者:
final=(pd.DataFrame(columns=
pd.MultiIndex.from_arrays([df.columns.get_level_values(0),s.str[0],s.str[1]])))
关于python - Pandas:如何通过拆分从一个多索引级别向多索引添加一个级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57449320/