我有一个多索引的 Pandas 数据框。第二层包含年份 ([2014,2015]),第三层包含月份 ([1, 2, .., 12])。我想将这两个合并为一个级别,例如 - [1/2014、2/2014 ...、6/2015]。这怎么可能呢?
我是 Pandas 的新手。搜索了很多但找不到任何类似的问题/解决方案。
编辑:我找到了一种方法来避免与 this question 的答案一起执行此操作.我应该以这种方式创建我的数据框。这似乎是按 DateTime 进行索引的方式。
最佳答案
考虑 pd.MultiIndex
和 pd.DataFrame
、mux
和 df
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
如果列表代表我们想要的索引,我们想为索引重新分配一个列表。
我希望第 1 级相同
df.index.get_level_values(0)
我希望新的第 2 级是当前第 2 级和第 3 级的字符串串联,但顺序相反
df.index.map('{0[2]}/{0[1]}'.format)
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
关于python - 在 Pandas 中将两个 MultiIndex 级别合并为一个级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41987743/