在Pandas中将两个MultiIndex级别合并为一个

Anm*_*ngh 10 python multi-index pandas

我有一个Pandas数据框,它是MultiIndexed.第二级包含一年([2014,2015]),第三级包含月份数([1,2,...,12]).我想将这两者合并为一个单一的级别,如 - [1/2014,2/2014 ...,2015年6月].怎么可以这样做?

我是熊猫的新手.搜索了很多,但找不到任何类似的问题/解决方案.

编辑:我找到了一种避免必须完全解决这个问题的方法.我应该以这种方式创建我的数据框架.这似乎是DateTime索引的方法.

piR*_*red 16

考虑pd.MultiIndexpd.DataFrame,muxdf

mux = pd.MultiIndex.from_product([list('ab'), [2014, 2015], range(1, 3)])

df = pd.DataFrame(dict(A=1), mux)

print(df)

          A
a 2014 1  1
       2  1
  2015 1  1
       2  1
b 2014 1  1
       2  1
  2015 1  1
       2  1
Run Code Online (Sandbox Code Playgroud)

如果列表代表我们想要的索引,我们希望将索引重新分配给索引.


df.index = [df.index.get_level_values(0), df.index.map('{0[2]}/{0[1]}'.format)]

print(df)

          A
a 1/2014  1
  2/2014  1
  1/2015  1
  2/2015  1
b 1/2014  1
  2/2014  1
  1/2015  1
  2/2015  1
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案!你能详细说明''{0 [2]}/{0 [1]}'.format`吗?具体来说,字符串中的这些数字是什么,它们与`format`方法有什么关系? (9认同)