如果我有一个 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)
但这忽略了新列的修改名称。
df.columns.map(''.join)
时遇到了与int
类型的列索引有关的问题。 - Max von Hippelint
时,解决方案是不同的。 - piRSquareddf.columns = (''.join(str(col)) for col in df.columns.values)
看起来能解决问题。 - dreyco676