首先,开始的 df 是一个列表。要将其制成数据框,您可以使用:
df=df.concat(df)
type(df) # Returns pandas.core.frame.DataFrame
type(df.columns) # Returns pandas.core.indexes.multi.MultiIndex
您的标题是一个多索引对象。这是一些参考https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.MultiIndex.html。
当我们打印列时,我们得到:
print(df.columns)
输出:
MultiIndex([( 'Name', 'Name'),
( 'postal abbreviation[1]', 'postal abbreviation[1]'),
( 'Cities', 'Capital'),
( 'Cities', 'Largest[5]'),
( 'Established[upper-alpha 1]', 'Established[upper-alpha 1]'),
('Population[upper-alpha 2][3]', 'Population[upper-alpha 2][3]'),
( 'Total area[4]', 'mi2'),
( 'Total area[4]', 'km2'),
( 'Land area[4]', 'mi2'),
( 'Land area[4]', 'km2'),
( 'Water area[4]', 'mi2'),
( 'Water area[4]', 'km2'),
( 'Numberof Reps.', 'Numberof Reps.')],
)
我们的专栏有两个层次:
print(df.levels)
输出:
[['Cities', 'Established[upper-alpha 1]', 'Land area[4]', 'Name', 'Numberof Reps.', 'Population[upper-alpha 2][3]', 'Total area[4]', 'Water area[4]', 'postal abbreviation[1]'], ['Capital', 'Established[upper-alpha 1]', 'Largest[5]', 'Name', 'Numberof Reps.', 'Population[upper-alpha 2][3]', 'km2', 'mi2', 'postal abbreviation[1]']]
您可以将列标题替换为:
Index=[('Name', ''),('postal abbreviation[1]',''),('Cities', 'Capital'),('Cities','Largest[5]'), ('Established[upper-alpha 1]',''),('Population[upper-alpha 2][3]', ''),('Total area[4]','mi2'),('Total area[4]', 'km2'),('Land area[4]','mi2'),('Land area[4]','km2'),('Water area[4]','mi2'),('Water area[4]','km2'),('Numberof Reps.',' ')]
index = pd.MultiIndex.from_tuples(Index)#To make it into a MultiIndex item
df.columns=index
所以现在如果你运行命令
print(df)
你会得到你想要的结果!