我有一个df,在这里,我希望求和在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)
恳请告知