数据层
device_id month_id net_grp watch_hours class
843 201707 TCH 0.250277 Ser
896 201803 NJV 0.820833 Ser
748 201711 SHX 2.461111 Sr
115 201712 SPE 1.478055 Opter
107 201802 US 2.575555 Opter
249 201710 ECC 3.869166 Ser
786 201711 NCK 0.563888 Opter
183 201802 HO 1.690555 Opter
752 201712 LC 0.993611 Opter
我正在对一个数据集执行透视操作,最终结果将包含大约500万行和600列。 上面是创建数据透视的数据示例。在
^{pr2}$对200000个记录样本执行此操作需要大约93.7毫秒,当我按如下方式分组时:
#Grouby
df_tier.groupby(['device_id','net_grp']).agg({'tuning_hours':['sum']}).unstack(level='net_grp').fillna(0).reset_index().set_index('device_id')
大约需要15毫秒
但是,pivot的输出更有用,因为它包含正确的列名,而groupby的输出:
group by中的列名不正确
('watch\u hours'、'sum'、'TCH')、('watch\u hours'、'sum'、'SPE')、('watch\u hours'、'sum'、'NCK')
如何才能从这些列名称中只得到net\u grp say TCH?在
我想在这里使用groupby,因为在处理整个数据时会出现性能问题。有人能帮我正确地得到列名吗?在
谢谢
我建议使用
sum
代替agg
删除列中Multiindex
中第一个和第二个不必要的级别:如果要使用} 删除第一级和第二级:
^{pr2}$agg
的解决方案,请按^{相关问题 更多 >
编程相关推荐