【发布时间】:2020-09-02 18:19:33
【问题描述】:
我有一个如下所示的数据框。是月末数据。
date , value , expectation
31/01/2020, 34, 40
28/02/2020, 35, 38
31/03/2020, 40, 44
我需要什么:
date , value , expectation
07/01/2020, 0, 0
14/01/2020, 0, 0
21/01/2020, 0, 0
28/01/2020, 0, 0
04/02/2020, 34, 40
11/02/2020, 0, 0
18/02/2020, 0, 0
25/02/2020, 0, 0
04/03/2020, 35, 38
基本上,我正在尝试将月末数据转换为每周数据。但是,不同的是,确切的月末日期可能与每周日期范围不匹配,因此它将落入周末日期(例如,2020 年 4 月 2 日为 2020 年 1 月 31 日)。另一个周末的日期用 0 填充。听起来很乱。但这是我尝试过的。
import pandas as pd
df = pd.read_csv('file.csv', index_col=0)
df.index = pd.to_datetime(df.index, format='%d/%m/%y')
dtr = pd.date_range('01.01.2020', '31.03.2020', freq='W')
empty = pd.DataFrame(index=dtr)
df = pd.concat([df, empty[~empty.index.isin(df.index)]]).sort_index().fillna(0)
代码有效,但我没有得到确切的预期输出。任何帮助表示赞赏。
【问题讨论】: