【发布时间】:2016-06-03 06:54:10
【问题描述】:
我想创建以下数据框:
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
A 和 B 已给出。 C 应通过函数生成,无需迭代。可能以这种方式:
def generate_C():
C = np.where(A == -1, << here prior value from B * -1 >>, 0)
df['C] = C
return df
我尝试通过 cumsum() 对 B 和 C 列进行尝试,但没有成功。请问有什么建议吗?
【问题讨论】:
-
你的问题很有趣。但是我不明白与
cumsum的联系。 -
我认为您可以为数据框添加更多值,因为不清楚为什么需要使用
cumsum。 -
我考虑过使用 cumsum() 因为 B 和 C 上的 cumsum() 应该会导致 B 列的剩余正值。例如在行 c 中:B 和 C 上的 cumsum() (来自a 到 b) 行是 +10。在 Excel 中,我会使用这样的 =IF(A7=-1;SUM($B$2:C6)*-1;0)。
-
我还是不明白。是否可以在
B列中添加更多价值? -
@jezrael,当然欢迎替代解决方案。这只是更大数据框的一部分,其中所有 comumns 都是通过该函数生成的。因此,C 的生成也应该是功能的一部分。编辑:添加了更多行
标签: python pandas dataframe cumsum