【问题标题】:Calculate daily from cumulative sum每天从累积总和计算
【发布时间】:2020-04-19 17:21:11
【问题描述】:

是否有一种不涉及“手动”循环的简单方法将累积总和系列转换为每日计数系列?是 cumsum() 的反义词吗?

I have the following df
Day  CumSum  
Mon    1
Tue    4
Wed    8
Thu    16
Fri    25
Sat    32
Sun    43

我想用每日值填充一个额外的列

Day   CumSum   Daily 
Mon     1      1      
Tue     4      3      
Wed     8      4      
Thu     16     8      
Fri     25     9      
Sat     32     7      
Sun     43     11     

【问题讨论】:

标签: python pandas numpy cumsum


【解决方案1】:

您可以在这里使用.diff(),然后在CumSum列中用对应的值填充第一条记录的NaN

df['Daily'] = df['CumSum']<b>.diff().fillna(df['CumSum'])</b>

对于给定的样本数据,这给了我们:

>>> df
   Day  CumSum
0  Mon       1
1  Tue       4
2  Wed       8
3  Thu      16
4  Fri      25
5  Sat      32
6  Sun      43
>>> df['Daily'] = df['CumSum'].diff().fillna(df['CumSum'])
>>> df
   Day  CumSum  Daily
0  Mon       1    1.0
1  Tue       4    3.0
2  Wed       8    4.0
3  Thu      16    8.0
4  Fri      25    9.0
5  Sat      32    7.0
6  Sun      43   11.0

【讨论】:

    【解决方案2】:

    反转现有的累积总和列,使其减少,然后对其运行cumsum(),然后将其反转以获得原始顺序。

    np.cumsum(x[::-1])[::-1] 
    

    【讨论】:

      猜你喜欢
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 2020-02-13
      • 2015-09-11
      • 1970-01-01
      相关资源
      最近更新 更多