如何从指定DataFrame生成带有多级列的目标表格?
问题:将指定DataFrame转换为多级列表格
我有如下DataFrame:
data = { 'names': ['Rose', 'Rose', 'Tulip', 'Tulip', 'Lily'], 'f': [10, 20, 5, 15, 30], 'h': [5, 8, 6, 12, 10], 'date':['2023-01-01', '2023-02-01', '2023-02-01', '2023-03-01', '2023-04-01'] }
想要生成如下带有多级列的表格:
Rose Tulip Lily f h f h f h 2023-01-01 10 5 0 0 0 0 2023-02-01 20 8 5 6 0 0 2023-03-01 0 0 15 12 0 0 2023-04-01 0 0 0 0 30 10
解决方案
可以通过以下步骤实现:
转换为DataFrame对象
先将字典数据转为pandas的DataFrame:import pandas as pd df = pd.DataFrame(data)设置索引并重塑列结构
指定date和names为索引,再用unstack将names列转为外层列,同时用fill_value=0填充缺失的数值:result = df.set_index(['date', 'names'])[['f', 'h']].unstack(fill_value=0)调整列层级顺序(可选)
若需要确保花名作为外层列、f/h作为内层列的顺序,可通过swaplevel和sort_index优化列的排列:result = result.swaplevel(axis=1).sort_index(axis=1)
执行上述代码后,result就是目标格式的多级列表格。
内容的提问来源于stack exchange,提问作者Sandy
相关产品推荐
相关产品推荐

