繁体   English   中英

使用unstack()重塑熊猫数据框

[英]Reshaping pandas dataframe with unstack()

我正在尝试重塑pandas DataFrame,以便将其中一列分解为“ broader”。 一旦我继续unstack(),就会出现新的列级别,但是我似乎无法以所需的方式重新排列标题。

首先,我有以下df:

from pandas import *

fList = [['Packs', 'Brablik', 'Holesovice', '2017', 100],
         ['Decorations', 'Drapp-design', 'Holesovice', '2017', 150],
         ['Decorations', 'Klapetkovi', 'Holesovice', '2017', 200],
         ['Decorations', 'Lezecké dárky', 'Fler', '2017', 100],
         ['Decorations', 'PP', 'Other', '2017', 350],
         ['Decorations', 'Pavlimila', 'Akce', '2017', 20],
         ['Decorations', 'Pavlimila', 'Holesovice', '2017', 50],
         ['Decorations', 'Wiccare', 'Holesovice', '2017', 70],
         ['Toys', 'Klára Vágnerová', 'Holesovice', '2017', 100],
         ['Toys', 'Lucie Polonyiová', 'Holesovice', '2017', 80],
         ['Dresses', 'PP', 'Other', '2018', 200]]

df = DataFrame(fList, columns = ['Section', 'Seller', 'Store', 'Selected_period', 'Total_pieces'])

这将产生: 在此处输入图片说明

因此,我将其重塑为:

df = df.set_index(['Section', 'Seller', 'Store', 'Selected_period']).unstack(level = -1)
df = df.fillna(0)
df.columns = df.columns.droplevel(0)

输出:

在此处输入图片说明

但是,我想在最终数据框中添加以下几列:部门,卖方,商店,2017年,2018年。尽管我尝试采用已发布的解决方案,但我仍然无法重新排列它以便获得所需的输出在这里在这里在这里 有什么建议么?

如果我理解正确,您似乎只是缺少了reset_index()调用。 尝试这个:

df = df.set_index(['Section', 'Seller', 'Store', 'Selected_period']).unstack(level = -1).fillna(0)
df.columns = df.columns.droplevel(0).rename('')
df = df.reset_index()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM