【发布时间】:2021-01-26 23:35:12
【问题描述】:
我有一个 pandas 数据框,可以通过以下方式创建:
pd.DataFrame([[1,'a','green'],[2,'b','blue'],[2,'b','green'],[1,'e','green'],[2,'b','blue']], columns = ['sales','product','color'], index = ['01-01-2020','01-01-2020','01-02-2020','01-03-2020','01-04-2020'])
我想使用“颜色”功能取消堆叠数据框,并按 [green,blue],[sales,product] 的乘积创建一个多索引,并将现有列作为列多索引的第二级。数据框的索引是日期。可以使用代码创建我想要的结果数据框:
pd.DataFrame([[1,'a',2,'b'],[2,'b',np.nan,np.nan],[1,'e',np.nan,np.nan],[np.nan,np.nan,2,'b']],columns = pd.MultiIndex.from_product([['green','blue'],['sales','product']]), index = ['01-01-2020','01-02-2020','01-03-2020','01-04-2020'])
请注意,由于通用日期索引,生成的数据框将比原始数据框短。
在我的一生中,我一直无法弄清楚如何正确旋转/取消堆叠来解决这个问题。我正在尝试将其应用于非常大的数据框,因此性能对我来说是关键。非常感谢您的帮助!
【问题讨论】:
标签: python pandas dataframe pivot