【问题标题】:pandas: cumsum ignoring first two rowspandas:cumsum 忽略前两行
【发布时间】:2017-04-25 17:33:09
【问题描述】:

我有一个包含以下列的数据框:

|---------------------| 
|          A          |
|---------------------|
|           0         |
|---------------------|
|         2.63        |
|---------------------|
|         7.10        |
|---------------------|
|         5.70        |
|---------------------|
|         6.96        |
|---------------------|
|         7.58        |
|---------------------|
|         3.3         |
|---------------------|
|         1.93        |
|---------------------|

我需要得到累计和,但重点是有点特殊。第一个元素应该是0,下面是从上一列开始的累积和,所以在这种情况下我需要产生:

|---------------------| 
|          B          |
|---------------------|
|           0         |
|---------------------|
|           0         |
|---------------------|
|         2.63        |
|---------------------|
|         9.73        |
|---------------------|
|        15.43        |
|---------------------|
|        22.39        |
|---------------------|
|        29.97        |
|---------------------|
|        33.27        |
|---------------------|

我知道在没有我要求的条件时很容易实现:

df['B'] = df.A.cumsum()

但是,我不知道如何解决这个问题,我正在考虑实现一个 for 循环,但我希望有一种使用 pandas 的简单方法。

【问题讨论】:

  • 你只需要在cumsum后面加上一个shiftdf.A.cumsum().shift().fillna(0)
  • @Psidom,谢谢。

标签: python pandas dataframe cumsum


【解决方案1】:

您可以添加shiftfillna

df = df.A.cumsum().shift().fillna(0)
print (df)
0     0.00
1     0.00
2     2.63
3     9.73
4    15.43
5    22.39
6    29.97
7    33.27
Name: A, dtype: float64

【讨论】:

    【解决方案2】:

    建立在@jezrael 的答案之上:您可以忽略fillna() 并执行以下操作:

    df = pd.DataFrame({"A": [0, 2.63, 7.10, 5.70, 6.96, 7.58, 3.3, 1.93]})
    
    df = df.A.cumsum().shift(fill_value=0)
    
    print (df)
    
    0     0.00
    1     0.00
    2     2.63
    3     9.73
    4    15.43
    5    22.39
    6    29.97
    7    33.27
    Name: A, dtype: float64
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 2014-10-28
      • 2012-10-21
      • 1970-01-01
      • 2012-09-03
      • 2017-07-07
      • 2011-02-06
      相关资源
      最近更新 更多