Python - 将周末值推至周一

Bru*_*que 6 python datetime data-manipulation weekend dataframe

我有一个数据框(称为 df),如下所示:

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
Run Code Online (Sandbox Code Playgroud)

Luk*_*yer 0

这使用pd.shift解决了您的问题。

import pandas as pd
df['prior_volume'] = df.Volume.shift(1)
df['prior_volume2'] = df.Volume.shift(2)
df.loc[df['WEEKDAY'] == 0, 'Volume'] = df.loc[df['WEEKDAY'] == 0, 'prior_volume'] + \
    df.loc[df['WEEKDAY'] == 0, 'prior_volume2'] + \
    df.loc[df['WEEKDAY'] == 0, 'Volume']
df = df[df['WEEKDAY'].isin(range(5))]
df = df[['Volume', 'WEEKDAY']]
df.head(10)
Run Code Online (Sandbox Code Playgroud)

产生: 在此输入图像描述