重命名Pandas DataFrame中未命名的多索引列

迪尼亚

我创建了这个数据框:

import pandas as pd
columns = pd.MultiIndex.from_tuples([("x", "", ""), ("values", "a", "a.b"), ("values", "c", "")])
df0 = pd.DataFrame([(0,10,20),(1,100,200)], columns=columns)
df0

我卸载df0到Excel:

df0.to_excel("test.xlsx")

并再次加载:

df1 = pd.read_excel("test.xlsx", header=[0,1,2])
df1

我有Unnamed :...列名。

为了使它df1看起来像初始,df0我运行:

def rename_unnamed(df, label=""):
    for i, columns in enumerate(df.columns.levels):
        columns = columns.tolist()
        for j, row in enumerate(columns):
            if "Unnamed: " in row:
                columns[j] = ""
        df.columns.set_levels(columns, level=i, inplace=True)
    return df

rename_unnamed(df1)

做得好。但是,从盒子里有没有熊猫可以做到这一点?

耶斯列尔

您可以numpy.where通过以下条件使用条件contains

for i, col in enumerate(df1.columns.levels):
    columns = np.where(col.str.contains('Unnamed'), '', col)
    df1.columns.set_levels(columns, level=i, inplace=True)

print (df1)
   x values     
          a    c
        a.b     
0  0     10   20
1  1    100  200

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章