Pandas 熊猫:替代NA';从其他列中的当前非缺失值获得阴影值

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值乘以中间年

假设我有以下资产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值乘以中间年份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