我创建了这个数据框:
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] 删除。
我来说两句