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

标签 python pandas multi-index

我有一个多索引的 Pandas 数据框。第二层包含年份 ([2014,2015]),第三层包含月份 ([1, 2, .., 12])。我想将这两个合并为一个级别,例如 - [1/2014、2/2014 ...、6/2015]。这怎么可能呢?

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

编辑:我找到了一种方法来避免与 this question 的答案一起执行此操作.我应该以这种方式创建我的数据框。这似乎是按 DateTime 进行索引的方式。

最佳答案

考虑 pd.MultiIndexpd.DataFramemuxdf

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/

相关文章:

python - 如何在Python中运行循环并每次返回到不同的列表

python - 如何在 python pandas 中找到具有多索引的两个数据框列的最小值?

python - Azure Flask Web 应用程序默认部署中的服务器错误

javascript - 无法通过静态 URL 包含外部 javascript 文件

python浮点到整数列表不匹配

python - 将值标签/类别分配给 Pandas 中现有数据的最简单方法

python - 面板数据: create new variable with a condition

python - 如何从数据帧列字符串中提取周期和变量名称以进行多索引面板数据准备

python - 计算具有多列的 pandas 数据框中的聚合值

python - 你可以在 colab notebook 中更改内核吗?