我有一个数据帧stockData
。零件示例如下所示:
Name: BBG.XCSE.CARLB.S_LAST_ADJ BBG.XCSE.CARLB.S_FX .....
date
2015-09-11 0.1340 490.763
2015-09-14 0.1340 484.263
2015-09-15 0.1340 484.755
2015-09-16 0.1340 507.703
2015-09-17 0.1340 514.104 .....
每列都有一个数据类型,dtype:float64
我在循环一个静态数据帧,它包含了我的宇宙中的每个名字,我迭代这个,然后每天迭代每个名字(在这个例子中,名字是BBG.XCSE.CARB酒店但实际上有成百上千个名字)取“name_LAST_ADJ”列并乘以“name_FX”列。在
我使用的代码如下所示:
^{pr2}$但是有时数据不存在(因为没有该名称的历史记录),并且我收到一个键错误,因为该名称的列不在数据框中。在
使用上面的代码,我尝试创建一个名为name_LAST_ADJ_EUR的附加列,当有数据时,它应该看起来像:
Name: BBG.XCSE.CARLB.S_LAST_ADJ BBG.XCSE.CARLB.S_FX BBG.XCSE.CARLB.S_LAST_ADJ_EUR
date
2015-09-11 0.1340 490.763 65.762242
2015-09-14 0.1340 484.263 64.891242
2015-09-15 0.1340 484.755 64.95717
2015-09-16 0.1340 507.703 68.032202
2015-09-17 0.1340 514.104 68.889936
当name_LAST_ADJ列中没有数据时,是否有一种方法为该列生成一个NaN输出,使其看起来像:
Name: BBG.XCSE.CARLB.S_LAST_ADJ_EUR
date
2015-09-11 NaN
2015-09-14 NaN
2015-09-15 NaN
2015-09-16 NaN
2015-09-17 NaN
我尝试使用以下方法:
stockData[unique_id+"_LAST_ADJ_EUR"] = np.where((stockData[unique_id+"_LAST_ADJ"] == np.nan),stockData[unique_id+"_LAST_ADJ_EUR"]='NaN',stockData[unique_id+"_LAST_ADJ_EUR"] = stockData[unique_id+"_FX"] * stockData[unique_id+"_LAST_ADJ"])
如果有一个列就可以了,但是当没有列可以引用时,它会抛出keyrerror异常。在
我首先将列解析为一个多重索引
那么乘法就变得简单了
^{pr2}$对我来说,棘手的部分是用
'EUR'
重新插入它。是我干的在
for
循环中,尝试添加类似于虽然在
^{pr2}$for
循环中执行此操作可能是最有效的,但您也可以同时执行,如下所示:例如:
相关问题 更多 >
编程相关推荐