为了账号安全,请及时绑定邮箱和手机立即绑定

pivot_table() 到 df 没有要聚合的数字类型

pivot_table() 到 df 没有要聚合的数字类型

慕的地6264312 2021-11-23 19:00:05
我有一个 df,我正试图对其进行非规范化。基本上我想更改参数值,例如,'inst-cap-c','cap-lo-c'等...成列。为了做到这一点,pandas 库中目前有 2 种方法。对于他们两个,我都遇到了一些问题并且无法对这个 df 进行非规范化......df 如下所示(为简单起见...):data          Site  Storage Commodity     parameter    value0  Mid   Pump    Elec         inst-cap-c        01  Mid   Pump    Elec           cap-lo-c        02  Mid   Pump    Elec           cap-up-c  1.5e+153  Mid   Pump    Elec         inst-cap-p        04  Mid   Pump    Elec           cap-lo-p        0...52 South Pump    Elec               wacc     0.0753 South Pump    Elec       depreciation       5054 South Pump    Elec               init        155 South Pump    Elec          discharge  3.5e-0656 South Pump    Elec           ep-ratio     None当我尝试通过以下方式创建带有参数值的列时:data.pivot_table(values='value',                 index=['Site', 'Storage', 'Commodity'],                 columns='parameter')它只是说: *** pandas.core.base.DataError: No numeric types to aggregate我猜这是因为 的None值ep-ratio,我不能使用NaNover None,因为它造成了其他问题。那么我怎样才能对这个数据帧进行非规范化呢?预期结果:data          Site    Storage  Commodity  inst-cap-c  cap-lo-c cap-up-c ... ep-ratio0  Mid     Pump     Elec                0         0  1.5e+15 ...     None1  North   Pump     Elec                0         0  1.5e+15 ...     None2  South   Pump     Elec                0         0  1.5e+15 ...     None额外的:data.set_index(['Site', 'Storage','Commodity'], append=True).unstack('parameter')*** KeyError: 'Level parameter not found'
查看完整描述

1 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

您已关闭,需要将parameter列添加到列表中,选择value之前unstack和最后使用的列reset_index以rename_axis进行数据清理:


df = (data.set_index(['Site', 'Storage','Commodity','parameter'])['value']

          .unstack()

          .reset_index()

          .rename_axis(None, axis=1))

print (df)

    Site Storage Commodity cap-lo-c cap-lo-p cap-up-c depreciation discharge  \

0    Mid    Pump      Elec        0        0  1.5e+15          NaN       NaN   

1  South    Pump      Elec      NaN      NaN      NaN           50   3.5e-06   


  ep-ratio init inst-cap-c inst-cap-p  wacc  

0      NaN  NaN          0          0   NaN  

1     None    1        NaN        NaN  0.07  


查看完整回答
反对 回复 2021-11-23
  • 1 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信