python - cumsum 限制在一个范围内(python,pandas)

标签 python pandas dataframe

我有一个 df,我希望将 cumsum 限制在 0 到 6 的范围内。总和超过 6 将翻转为 0。adj_cumsum 列就是我想要得到的。我搜索并发现了一些使用循环的帖子,但是,由于我的更简单,因此想知道是否有更简单或更新的方法。

+----+-------+------+----------+----------------+--------+------------+
|    | month | days | adj_days | adj_days_shift | cumsum | adj_cumsum |
+----+-------+------+----------+----------------+--------+------------+
|  0 | jan   |   31 |        3 |              0 |      0 |          0 |
|  1 | feb   |   28 |        0 |              3 |      3 |          3 |
|  2 | mar   |   31 |        3 |              0 |      3 |          3 |
|  3 | apr   |   30 |        2 |              3 |      6 |          6 |
|  4 | may   |   31 |        3 |              2 |      8 |          1 |
|  5 | jun   |   30 |        2 |              3 |     11 |          4 |
|  6 | jul   |   31 |        3 |              2 |     13 |          6 |
|  7 | aug   |   31 |        3 |              3 |     16 |          2 |
|  8 | sep   |   30 |        2 |              3 |     19 |          5 |
|  9 | oct   |   31 |        3 |              2 |     21 |          0 |
| 10 | nov   |   30 |        2 |              3 |     24 |          3 |
| 11 | dec   |   31 |        3 |              2 |     26 |          5 |
+----+-------+------+----------+----------------+--------+------------+
data = {"month": ['jan','feb','mar','apr',
                 'may','jun','jul','aug',
                 'sep','oct','nov','dec'], 
       "days": [31,28,31,30,31,30,31,31,30,31,30,31]}
df = pd.DataFrame(data)

df['adj_days'] = df['days'] - 28
df['adj_days_shift'] = df['adj_days'].shift(1)
df['cumsum'] = df.adj_days_shift.cumsum()
df.fillna(0, inplace=True)

请多多指教

最佳答案

您正在寻找的称为模运算。

使用df['adj_cumsum'] = df['cumsum'].mod(7)

关于python - cumsum 限制在一个范围内(python,pandas),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72187189/

相关文章:

python - 有没有办法使用 "read_csv"方法来读取 csv 文件以便它们在目录中列出?

python - 如何用 pandas 将大表保存为图像

python - sklearn : sklearn. 数组的预处理 DeprecationWarning

python - 将计算列舍入为 1dp

python - 用 Python 制作实时图表的好框架?

python Pandas : filter out records with null or empty string for a given field

r - 将可变长度列表转换为边缘列表 igraph R

sql - 在 R 中,如何从另一个 data.frame 的一列创建具有唯一值的 data.frame?

python - pandas.Series 名称的作用在做差异时

python - python pandas 中的 DataFrame.apply 更改原始和重复的 DataFrame