Pandas:如何将多层索引列标题转换为普通列标题?

2 投票
2 回答
1799 浏览
提问于 2025-04-18 15:20

我的数据框长这样,列的标题是多重索引,(True和False是布尔类型)。

    date         a            value
id                   False           True
0    2013-11-26  0   346.749819      0.000000
1    2013-11-27  1   1786.449591     21442.388942
2    2013-11-28  1   677837.782372   92998.909207
3    2013-11-29  0   731443.020535   322093.419644
4    2013-11-30  1   18082.124124    11637.523334

我该如何简单地把它变成这样:

id   date        a   value: False    value: True
0    2013-11-26  0   346.749819      0.000000
1    2013-11-27  1   1786.449591     21442.388942
2    2013-11-28  1   677837.782372   92998.909207
3    2013-11-29  0   731443.020535   322093.419644
4    2013-11-30  1   18082.124124    11637.523334

列名并不重要,因为我可以稍后用rename来修改它们。

2 个回答

0

这里有一种更符合Python风格的方法,可以将数据框中的多重索引列扁平化:

df.columns = df.columns.map(' : '.join)
2

如果名字不重要,你可以这样做,这样可以重置行的索引,并用一个包含每个层级的元组来替换多重索引的列。

df = df.reset_index()
df.columns = list(df.columns)

撰写回答