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)
A并B给出.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但没有走远.有什么建议吗?
您可以使用:
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)