gpt4 book ai didi

python - 用 Python 中特定列的先前值填充 NaN

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:36 25 4
gpt4 key购买 nike

我有一个 Pandas 数据框,如下所示:

df =

                      open       high        low      close
Timestamp
2014-01-07 13:18:00 874.67040 892.06753 874.67040 892.06753
2014-01-07 13:19:00 NaN NaN NaN NaN
2014-01-07 13:20:00 NaN NaN NaN NaN
2014-01-07 13:21:00 883.23085 883.23085 874.48165 874.48165
2014-01-07 13:22:00 NaN NaN NaN NaN

对于每个 NaN,它们都应采用前一时期的收盘价。

编辑:我试过使用 df.fillna(method='ffill') 但它使每个 NaN 直接在其上方取值。我希望每个 NaN 只取它前面的 Close 值。

使用填充产量:

                      open       high        low      close
Timestamp
2014-01-07 13:18:00 874.67040 892.06753 874.67040 892.06753
2014-01-07 13:19:00 874.67040 892.06753 874.67040 892.06753

但我正在寻找:

                      open       high        low      close
Timestamp
2014-01-07 13:18:00 874.67040 892.06753 874.67040 892.06753
2014-01-07 13:19:00 892.06753 892.06753 892.06753 892.06753

最佳答案

几种方式:

In [3166]: df.apply(lambda x: x.fillna(df.close.shift())).ffill()
Out[3166]:
open high low close
Timestamp
2014-01-07 13:18:00 874.67040 892.06753 874.67040 892.06753
2014-01-07 13:19:00 892.06753 892.06753 892.06753 892.06753
2014-01-07 13:20:00 892.06753 892.06753 892.06753 892.06753
2014-01-07 13:21:00 883.23085 883.23085 874.48165 874.48165
2014-01-07 13:22:00 874.48165 874.48165 874.48165 874.48165

In [3167]: df.fillna({c: df.close.shift() for c in df}).ffill()
Out[3167]:
open high low close
Timestamp
2014-01-07 13:18:00 874.67040 892.06753 874.67040 892.06753
2014-01-07 13:19:00 892.06753 892.06753 892.06753 892.06753
2014-01-07 13:20:00 892.06753 892.06753 892.06753 892.06753
2014-01-07 13:21:00 883.23085 883.23085 874.48165 874.48165
2014-01-07 13:22:00 874.48165 874.48165 874.48165 874.48165

关于python - 用 Python 中特定列的先前值填充 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46782289/

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