【问题标题】:How to populate subsequent rows based on previous row value and value from another column in Python Pandas?如何根据 Python Pandas 中另一列的前一行值和值填充后续行?
【发布时间】:2020-05-28 23:37:57
【问题描述】:

我有以下df

cases  percent_change
100    0.01
NaN    0.00
NaN    -0.001
NaN    0.05

对于cases 列的下一行(从第二行开始),计算为next cases = previous cases * (1 + previous percent_change),或者对于低于 100 的行,计算为 100 * (1 + 0.01) = 101。因此,它应该像这样填充

cases  percent_change
100    0.01
101    0.00
101    -0.001
100.899    0.05

我想忽略第一行(或 100 行)。这是我的代码不起作用

df.loc[1:, 'cases'] = df['cases'].shift(1) * (1 + df['percent_change'].shift(1))

也试过了,没有成功

df.loc[1:, 'cases'] = df.loc[1:, 'cases'].shift(1) * (1 + df.loc[1:, 'percent_change'].shift(1))

【问题讨论】:

    标签: python-3.x pandas data-science


    【解决方案1】:
    df['cases'] = (df.percent_change.shift(1).fillna(0) + 1).cumprod() * df.at[0, 'cases']
    print(df)
    

    打印:

         cases  percent_change
    0  100.000           0.010
    1  101.000           0.000
    2  101.000          -0.001
    3  100.899           0.050
    

    【讨论】:

      猜你喜欢
      • 2020-11-26
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多