如何在pandas DataFrame中平移一个分层列索引?[英] How do I flatten a hierarchical column index in a pandas DataFrame?

本文是小编为大家收集整理的关于如何在pandas DataFrame中平移一个分层列索引?的处理方法,想解了如何在pandas DataFrame中平移一个分层列索引?的问题怎么解决?如何在pandas DataFrame中平移一个分层列索引?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

假设我有一个 pandas.DataFrame,列上有一个分层索引,如下所示:

import pandas as pd
columns = pd.MultiIndex.from_product([list('AB'), list('ab')])
df = pd.DataFrame(np.arange(8).reshape((2,4)), columns=columns)
print df

输出[1]:

   A     B   
   a  b  a  b
0  0  1  2  3
1  4  5  6  7

我想展平列索引,使其如下所示:

   Aa  Ab  Ba  Bb
0   0   1   2   3
1   4   5   6   7

我试过了

def flatten(col):
    col.name = ''.join(col.name)
    return col

df.apply(f)

但这只是忽略了新列的修改名称.

推荐答案

set_axis

df.set_axis([f"{x}{y}" for x, y in df.columns], axis=1, inplace=False)

   Aa  Ab  Ba  Bb
0   0   1   2   3
1   4   5   6   7
<小时>

index.map

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

   Aa  Ab  Ba  Bb
0   0   1   2   3
1   4   5   6   7
<小时>

对于非字符串列值

df.columns = df.columns.map(lambda x: ''.join([*map(str, x)]))
df

   Aa  Ab  Ba  Bb
0   0   1   2   3
1   4   5   6   7

本文地址:https://www.itbaoku.cn/post/1727979.html