可以从行创建MultiIndex,并将其分配为新的列标签。
例如,要进行以下转换,请使用pd.MultiIndex.from_frame()
。
df = pd.DataFrame([[2016, 2016, 2015, 2015],
['Dollar Sales', 'Unit Sales', 'Dollar Sales', 'Unit Sales'],
[1, 2, 3, 4], [5, 6, 7, 8]], columns=[*'ABCD'])
new_labels = pd.MultiIndex.from_frame(df.iloc[:2].T.astype(str), names=['Year', 'Sales'])
df1 = df.set_axis(new_labels, axis=1).iloc[2:]
一个 MultiIndex 也可以从旧的列标签和数据帧行创建。例如,要进行以下转换,请使用
pd.MultiIndex.from_arrays()
。
df = pd.DataFrame([['Dollar Sales', 'Unit Sales', 'Dollar Sales', 'Unit Sales'],
[1, 2, 3, 4], [5, 6, 7, 8]], columns=[2016, 2016, 2015, 2015])
new_labels = pd.MultiIndex.from_arrays([df.columns, df.iloc[0]], names=['Year', 'Sales'])
df1 = df.set_axis(new_labels, axis=1).iloc[1:]
注意的一件重要事情是数据框的dtypes可能不适合它所持有的数据; 最后可能需要使用astype(int)
等。
此外,如果索引需要重置,则可能需要使用reset_index(drop=True)
.
pandas.MultiIndex
作为列标题。例如请查看 这个 和 这个。 - Midnighter