cumsum()在几列上

Al_*_*der 3 python dataframe pandas cumsum

我想创建以下数据帧:

Index       A        B        C
 a          0        0        0
 b          1       10        0
 c         -1        0      -10
 d          1       20        0
 e          0        0        0
 f         -1        0      -20
 g          0        0        0
 h          1       15        0
 i         -1        0      -15
Run Code Online (Sandbox Code Playgroud)

AB给出.C应通过函数生成,无需迭代.可能就是这种方式:

def generate_C():
    C = np.where(A == -1, << here prior value from B * -1 >>, 0)
    df['C] = C
    return df
Run Code Online (Sandbox Code Playgroud)

我尝试通过cumsum()在列上B,C但没有走远.有什么建议吗?

jez*_*ael 5

您可以使用:

df.loc[df.A==-1, 'C'] = (-df.loc[df.A==1, 'B']).values
df.C.fillna(0, inplace=True)
print (df)
       A   B    C   
Index                 
a      0   0   0.0
b      1  10   0.0
c     -1   0 -10.0
d      1  20   0.0
e      0   0   0.0
f     -1   0 -20.0
Run Code Online (Sandbox Code Playgroud)