如何使用非分隔符熊猫将索引拆分为多索引

e9e*_*e9s 4 python dataframe pandas

我有这个数据框:

   index         0
idxaa1cx1    some_text
idxbb2cx2    some_text
idxcc3cx3    some_text
Run Code Online (Sandbox Code Playgroud)

我想将索引拆分为多索引,如下所示:

  idx_1      idx_2        0
  idxa      a1cx1      some_text
  idxb      b2cx2      some_text
  idxc      c3cx3      some_text
Run Code Online (Sandbox Code Playgroud)

我试过这个:

df.index = pd.MultiIndex.from_tuples([tuple(idx.split(idx[:3][-5:])) for idx in df.index])
Run Code Online (Sandbox Code Playgroud)

返回:

idx_1    idx_2        0
          a1cx1      some_text
          b2cx2      some_text
          c3cx3      some_text
Run Code Online (Sandbox Code Playgroud)

但 idx_1 列是空白的。我也试过:

df.index = pd.MultiIndex.from_tuples([tuple({idx[:3]:idx[-5:]}) for idx in df.index])
Run Code Online (Sandbox Code Playgroud)

只返回:

idx_1        0
idxa      some_text
idxb      some_text
idxc      some_text
Run Code Online (Sandbox Code Playgroud)

并且不返回字典的“值”。我的问题是如何按任意长度拆分索引并获得多列?

Psi*_*dom 6

您可以使用pd.MultiIndex.from_arrays

df.index = pd.MultiIndex.from_arrays([df.index.str[:4], df.index.str[-5:]])
df.rename_axis(("idx_1", "idx_2"))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明