【问题标题】:Year wise cumsum based on condition on other column Python 3+ Pandas data frame基于其他列 Python 3+ Pandas 数据框条件的逐年累积和
【发布时间】:2018-12-11 10:08:37
【问题描述】:

我有一个包含三列的数据框,分别是年份、价格、PV。如果价格列中的值不等于零,我希望列 PV 的累积总和按照年份列重置。

df = pd.DataFrame({"Year": [2000] * 3 + [2001] * 3,
                   "Value": [0,100,0,0,100,100],
                   "PV": [7,8,9,12,13,14],
                   'Cumsum':[0,15,0,0,25,39]})

print (df)
   Year  Value  PV  Cumsum
0  2000      0   7       0
1  2000    100   8      15
2  2000      0   9       0
3  2001      0  12       0
4  2001    100  13      25
5  2001    100  14      39

【问题讨论】:

标签: python-3.x pandas cumsum


【解决方案1】:

numpy.whereDataFrameGroupBy.cumsum 一起使用:

df['Cumsum'] = np.where(df['Value'] == 0, 0, df.groupby('Year')['PV'].cumsum())
print (df)
   Year  Value  PV  Cumsum
0  2000      0   7       0
1  2000    100   8      15
2  2000      0   9       0
3  2001      0  12       0
4  2001    100  13      25
5  2001    100  14      39

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多