Python pivot_table()到df无需聚合的数值类型
我有一个df,我正在尝试去规范化。基本上,我想更改参数值,例如,Python pivot_table()到df无需聚合的数值类型,python,pandas,dataframe,pivot-table,Python,Pandas,Dataframe,Pivot Table,我有一个df,我正在尝试去规范化。基本上,我想更改参数值,例如,'inst-cap-c','cap-lo-c',等等。。。分成几列 为了做到这一点,到目前为止,熊猫库中有两种方法。在这两种情况下,我都遇到了一些问题,无法将此df反规范化 df如下所示(为了简单起见…): 当我尝试通过以下方式创建具有参数值的列时: data.pivot_table(values='value', index=['Site', 'Storage', 'Commodity'],
'inst-cap-c'
,'cap-lo-c'
,等等。。。分成几列
为了做到这一点,到目前为止,熊猫库中有两种方法。在这两种情况下,我都遇到了一些问题,无法将此df反规范化
df如下所示(为了简单起见…):
当我尝试通过以下方式创建具有参数值的列时:
data.pivot_table(values='value',
index=['Site', 'Storage', 'Commodity'],
columns='parameter')
它只是说:***pandas.core.base.DataError:没有要聚合的数字类型
我猜这是因为None
的ep比率的值
,我不能使用NaN
而不是None
,因为它产生了其他问题
那么,我如何去规范化这个数据帧呢
预期结果:
data
Site Storage Commodity inst-cap-c cap-lo-c cap-up-c ... ep-ratio
0 Mid Pump Elec 0 0 1.5e+15 ... None
1 North Pump Elec 0 0 1.5e+15 ... None
2 South Pump Elec 0 0 1.5e+15 ... None
额外:
data.set_index(['Site', 'Storage','Commodity'], append=True).unstack('parameter')
*** KeyError: 'Level parameter not found'
我还检查了这一点:它没有帮助您已关闭,需要
参数
列添加到列表,选择列值
之前和最后一次使用用于数据清理:
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
“我不能使用NaN而不是None,因为它会产生其他问题。”您应该更喜欢使用NaN,您可能会在pivot之后使用None替换NaN,但强烈地说,您应该更喜欢简单地使用NaN。@pivot_table()存在问题:因此,它允许您选择是否要通过dropna=True删除值,这是默认设置的。问题是我必须删除一些数据,其中一些数据就像上面的一样,我不应该删除。。。这是因为我的数据结构。因此,我不能用一个一致的方法来结束,我可以使用我的模型数据的每一个案例。这就是我以前将NaN值更改为None的原因。现在我无法执行非规范化。。。寻找更好的建议。。。
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