【问题标题】:Update values in pandas df column by adding fixed variable to preceding value通过将固定变量添加到前一个值来更新 pandas df 列中的值
【发布时间】:2020-08-17 04:39:10
【问题描述】:

我试图通过添加一个固定值来投影一列中的值。本质上,它就像 Excel 中的工作表,其中单元格 a1 中有一个值,单元格 b1 中有一个固定值,a2 将是 =sum(a1+$b$1) 并向下拖动单元格。在 pandas 中这似乎很简单,可能涉及 .cumsum,但我还没有找到一种方法来获得我想要的结果。

这是我的数据框。

df = pd.DataFrame({"date_column" : ["2020-08-16", "2020-08-17", "2020-08-18", "2020-08-19", "2020-08-20" , "2020-08-21", "2020-08-22", "2020-08-23", "2020-08-24", "2020-08-25" ] , 
"purchases" : [23,'','','','','','','','','']})

df
date_column    purchases
0   2020-08-16     23
1   2020-08-17    
2   2020-08-18    
3   2020-08-19    
4   2020-08-20    
5   2020-08-21    
6   2020-08-22    
7   2020-08-23    
8   2020-08-24    
9   2020-08-25  

另外,我计算了前两周的一个名为 avg_increase 的变量。

avg_increase
2.5000000

我想将 avg_increase 值添加到购买列中的初始值,然后将 avg_increase 值添加到该值,依此类推。期望的输出是:

date_column    purchases
0   2020-08-16     23
1   2020-08-17    25.5
2   2020-08-18    28
3   2020-08-19    30.5
4   2020-08-20    33
5   2020-08-21    35.5
6   2020-08-22    38
7   2020-08-23    40.5
8   2020-08-24    43
9   2020-08-25    45.5

【问题讨论】:

    标签: python pandas dataframe cumsum


    【解决方案1】:

    假设有序索引0..N的替代解决方案:

    df.purchases = df.loc[0,"purchases"]+df.index.values*2.5
    

    结果:

      date_column  purchases
    0  2020-08-16       23.0
    1  2020-08-17       25.5
    2  2020-08-18       28.0
    3  2020-08-19       30.5
    4  2020-08-20       33.0
    5  2020-08-21       35.5
    6  2020-08-22       38.0
    7  2020-08-23       40.5
    8  2020-08-24       43.0
    9  2020-08-25       45.5
    

    只需获取purchases 的第一个值并添加索引值乘以 2.5

    【讨论】:

      【解决方案2】:

      让我们尝试ffillcumsum 创建增加步骤

      df.purchases = df.purchases.where(df.purchases!='').ffill()+df.purchases.eq('').cumsum()*2.5
      Out[190]: 
      0    23.0
      1    25.5
      2    28.0
      3    30.5
      4    33.0
      5    35.5
      6    38.0
      7    40.5
      8    43.0
      9    45.5
      Name: purchases, dtype: float64
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-27
        • 1970-01-01
        • 2021-02-01
        • 1970-01-01
        • 2019-01-02
        • 1970-01-01
        • 1970-01-01
        • 2018-04-04
        相关资源
        最近更新 更多