pandas:cumsum忽略前两行

lmi*_*asf 2 python dataframe pandas cumsum

我有一个数据框,其中包含以下列:

|---------------------| 
|          A          |
|---------------------|
|           0         |
|---------------------|
|         2.63        |
|---------------------|
|         7.10        |
|---------------------|
|         5.70        |
|---------------------|
|         6.96        |
|---------------------|
|         7.58        |
|---------------------|
|         3.3         |
|---------------------|
|         1.93        |
|---------------------|
Run Code Online (Sandbox Code Playgroud)

我需要得到累积总和,但这一点有点特别.第一个元素应该是0,以下是从前一列开始的累积和,所以在这种情况下我需要生成:

|---------------------| 
|          B          |
|---------------------|
|           0         |
|---------------------|
|           0         |
|---------------------|
|         2.63        |
|---------------------|
|         9.73        |
|---------------------|
|        15.43        |
|---------------------|
|        22.39        |
|---------------------|
|        29.97        |
|---------------------|
|        33.27        |
|---------------------|
Run Code Online (Sandbox Code Playgroud)

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

df['B'] = df.A.cumsum()
Run Code Online (Sandbox Code Playgroud)

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

jez*_*ael 5

您可以添加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
Run Code Online (Sandbox Code Playgroud)