gpt4 book ai didi

Python pandas 数据框添加前一行值

转载 作者:太空狗 更新时间:2023-10-30 00:45:24 24 4
gpt4 key购买 nike

我有一个看起来像这样的 Pandas 数据框:

                     AAPL   IBM  GOOG  XOM
2011-01-10 16:00:00 1500 0 0 0
2011-01-11 16:00:00 0 0 0 0
2011-01-12 16:00:00 0 0 0 0
2011-01-13 16:00:00 -1500 4000 0 0
2011-01-14 16:00:00 0 0 0 0
2011-01-18 16:00:00 0 0 0 0

我的目标是通过添加前一行的值来填充行。结果将如下所示:

                     AAPL   IBM  GOOG  XOM
2011-01-10 16:00:00 1500 0 0 0
2011-01-11 16:00:00 1500 0 0 0
2011-01-12 16:00:00 1500 0 0 0
2011-01-13 16:00:00 0 4000 0 0
2011-01-14 16:00:00 0 4000 0 0
2011-01-18 16:00:00 0 4000 0 0

我尝试通过 dataframe 索引迭代

    for date in df.index:

并增加日期

    dt_nextDate = date + dt.timedelta(days=1)

但是代表周末的数据框索引中存在间隙。

我可以从第二行到最后遍历索引,返回上一行并添加值吗?

最佳答案

您的示例结果不是示例算法的输出,所以我不确定您到底要什么?

您显示的所需结果是一个累积总和,您可以使用:

>>> df.cumsum()
AAPL IBM GOOG XOM
index
2011-01-1016:00:00 1500 0 0 0
2011-01-1116:00:00 1500 0 0 0
2011-01-1216:00:00 1500 0 0 0
2011-01-1316:00:00 0 4000 0 0
2011-01-1416:00:00 0 4000 0 0
2011-01-1816:00:00 0 4000 0 0

但是你解释的你想要的东西和你展示的算法更可能是窗口大小等于 2 的滚动总和:

>>> result = pd.rolling_sum(df, 2)
>>> result
AAPL IBM GOOG XOM
index
2011-01-1016:00:00 NaN NaN NaN NaN
2011-01-1116:00:00 1500 0 0 0
2011-01-1216:00:00 0 0 0 0
2011-01-1316:00:00 -1500 4000 0 0
2011-01-1416:00:00 -1500 4000 0 0
2011-01-1816:00:00 0 0 0 0

要修复 NaN,只需执行以下操作:

>>> result.iloc[0,:] = df.iloc[0,:]
>>> result
AAPL IBM GOOG XOM
index
2011-01-1016:00:00 1500 0 0 0
2011-01-1116:00:00 1500 0 0 0
2011-01-1216:00:00 0 0 0 0
2011-01-1316:00:00 -1500 4000 0 0
2011-01-1416:00:00 -1500 4000 0 0
2011-01-1816:00:00 0 0 0 0

关于Python pandas 数据框添加前一行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19076539/

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