bounty将于明天到期。回答此问题可获得+50的声望奖励。Evan希望引起更多人关注此问题:我想知道如何滚动/合并(总和)周末值到下一个星期一与日期时间索引。所以,有没有周末日期的数据框架。
我有一个 Dataframe (称为df),如下所示:
我尝试获取所有周末的“成交量”值(列“WEEKDAY”= 5(星期六)或6(星期日)的值),并将它们与随后的星期一(WEEKDAY=0)相加。
我尝试了几种方法,但都没有真正奏效,以最后三行为例:
我期待的是这样的:
要重现问题:
!wget https://raw.githubusercontent.com/brunodifranco/TCC/main/volume_por_dia.csv
df = pd.read_csv('volume_por_dia.csv').sort_values('Datas',ascending=True)
df['Datas'] = pd.to_datetime(df['Datas'])
df = df_volume_noticias.set_index('Datas')
df['WEEKDAY'] = df.index.dayofweek
df
5条答案
按热度按时间zxlwwiss1#
这可以使用pd.shift解决您的问题。
其产生:
xghobddn2#
我使用.groupby来解决这个问题。
fzwojiic3#
您可以简单地循环行并从周五开始累积交易量,并更新周日交易量中的值。然后,只需删除周五和周六的行。
t0ybt7op4#
输入:
我假设索引日期是排序的,
Datas
索引是唯一的,并且没有缺失的日期。我不能做的一些假设是:由于这些原因,在计算周末交易量之前,我首先提取第一个星期六和最后一个星期一的日期:
现在我可以提取周末卷,确保我总是有周六周日对,并且对于这些对中的每一个, Dataframe 中存在下一个星期一:
现在,因为我有几个星期六和星期天的卷,我可以用下面的方法计算总和:
最后,将周末卷添加到起始卷:
我在下面附上df的最后25行:
dwthyt8l5#
在此添加2个解决方案:
1.使用
pd.shift
(由Lukas Hestermeyer早些时候指出;我已经添加了一个简化版本)1.使用滚动窗口(这实际上是一行程序)
这两种解决方案都假设;
Dates
按升序排序(如果不是,则应在继续之前进行排序)1.每个周末(星期六和星期日)的记录后面都有一个星期一的记录。在丢失数据的情况下,需要增加额外的检查
数据准备
溶液1 [pd.shift]:
方案二[滚动窗口]: