我要旋转具有多列的表。
数据框
a b c d
id_1 loc_1 sale_1 1
id_1 loc_1 sale_2 2
id_2 loc_2 sale_1 3
id_2 loc_2 sale_2 4
我应用了以下逻辑
pd.pivot_table(df,index=['a', 'b'], columns='c', values='d')
我得到以下输出
sale_1 sale_2
('id_1', 'loc_1') 1 2
('id_2', 'loc_2') 3 4
但我希望它为
a b sale_1 sale_2
id_1 loc_1 1 2
id_2 loc_2 3 4
我尝试将逻辑更改为
pd.pivot_table(df,index=['a', 'b'], columns='c', values='d').reset_index()
但是我面临
的错误TypeError: cannot insert an item into a CategoricalIndex that is not
already an existing category
我不确定我在哪里做错了吗?
答案 0 :(得分:1)
您的问题是数据透视表的数据列具有分类列。重置:
new_df = pd.pivot_table(df,index=['a', 'b'], columns='c', values='d')
new_df.columns = new_df.columns.categories
new_df.reset_index()
返回:
a b sale_1 sale_2
0 id_1 loc_1 1 2
1 id_2 loc_2 3 4