Pandas 熊猫:替代NA';从其他列中的当前非缺失值获得阴影值
假设我有以下资产X的价格:Pandas 熊猫:替代NA';从其他列中的当前非缺失值获得阴影值,pandas,Pandas,假设我有以下资产X的价格: 2004 NaN 2005 NaN 2006 246313.490770 2007 245557.678822 2008 NaN 2009 NaN 2010 246221.051892 有些年份缺少X值 我还有一个可比资产的价格,资产Y(资产Y从来没有价格): 对于资产X价格中的每一个NaN(顶部矩阵),我想用资产X的最后一个非NaN值乘以中间年
2004 NaN
2005 NaN
2006 246313.490770
2007 245557.678822
2008 NaN
2009 NaN
2010 246221.051892
有些年份缺少X值
我还有一个可比资产的价格,资产Y(资产Y从来没有价格):
对于资产X价格中的每一个NaN(顶部矩阵),我想用资产X的最后一个非NaN值乘以中间年份Y的增长率(botom矩阵)来替换该NaN
例如,2009年的替代值为:
245557.678822/249381.243924*249514.093672
(2007年的价值是2007年至2009年间Y增长率的X倍)
不过,2004年和2005年的价值仍然是南的
我可以使用难看的嵌套循环来编写代码,但我想知道pandas中是否有一个优雅的两行程序可以做到这一点(我有一个数据框,其中有几个列X.1、X.2,…有分散的缺失值,还有一个列Y没有缺失值)我想你需要先除以这两列,然后向前填充
NaN
by,最后乘以:
是的,我查看了其他专栏,这就是它!谢谢
245557.678822/249381.243924*249514.093672
print (X)
col1
2004 NaN
2005 NaN
2006 246313.490770
2007 245557.678822
2008 NaN
2009 NaN
2010 246221.051892
print (Y)
col1
2004 249008.038563
2005 248558.125114
2006 249644.313926
2007 249381.243924
2008 248739.371177
2009 249514.093672
2010 251120.103454
print (X.col1.div(Y.col1))
2004 NaN
2005 NaN
2006 0.986658
2007 0.984668
2008 NaN
2009 NaN
2010 0.980491
Name: col1, dtype: float64
print (X.col1.div(Y.col1).ffill())
2004 NaN
2005 NaN
2006 0.986658
2007 0.984668
2008 0.984668
2009 0.984668
2010 0.980491
Name: col1, dtype: float64
X['new'] = (X.col1.div(Y.col1).ffill().mul(Y.col1))
print (X)
col1 new
2004 NaN NaN
2005 NaN NaN
2006 246313.490770 246313.490770
2007 245557.678822 245557.678822
2008 NaN 244925.647401
2009 NaN 245688.491690
2010 246221.051892 246221.051892
print (245557.678822/249381.243924*249514.093672)
245688.4916900315