gpt4 book ai didi

python - Pandas:使用另一个系列的增长率向后增长一个系列

转载 作者:太空宇宙 更新时间:2023-11-03 21:48:26 26 4
gpt4 key购买 nike

我在一个系列的 DataFrame 开头丢失了数据,我想通过使用另一个系列的增长率恢复该系列来填充这些 NA。

df = pd.DataFrame({'X':[np.nan, np.nan, np.nan, 6, 6.7, 6.78, 7, 9.1], 
'Y':[5.4, 5.7, 5.5, 6.1, 6.5, 6.80, 7.1, 9.12]})

X Y
0 NaN 5.40
1 NaN 5.70
2 NaN 5.50
3 6.00 6.10
4 6.70 6.50
5 6.78 6.80
6 7.00 7.10
7 9.10 9.12

即我想要的是:

df2 = pd.DataFrame({'X':[5.31147, 5.60656, 5.40984, 6, 6.7, 6.78, 7, 9.1], 
'Y':[5.4, 5.7, 5.5, 6.1, 6.5, 6.80, 7.1, 9.12]})

这样两个系列对于前几个原始缺失值具有相同的增长率

df2.pct_change()

X Y
0 NaN NaN
1 0.055556 0.055556
2 -0.035088 -0.035088
3 0.109091 0.109091
4 0.116667 0.065574
5 0.011940 0.046154
6 0.032448 0.044118
7 0.300000 0.284507

有什么想法吗?我已经弄清楚如何迭代回来并将输出保存到列表中,但是预先挂起它很庞大,我需要将其预先挂接到原始数据帧

最佳答案

你可以让

first_non_nan = df.X.isnull().idxmin()
changes = df.Y[:first_non_nan+1].pct_change()
while first_non_nan > 0:
df.X[first_non_nan-1] = df.X[first_non_nan]/(changes[first_non_nan]+1)
first_non_nan -= 1

结果:

In [48]: df
Out[48]:
X Y
0 5.311475 5.40
1 5.606557 5.70
2 5.409836 5.50
3 6.000000 6.10
4 6.700000 6.50
5 6.780000 6.80
6 7.000000 7.10
7 9.100000 9.12

关于python - Pandas:使用另一个系列的增长率向后增长一个系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52300735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com