【问题标题】:Python fill dates in dataframe and according valuesPython在数据框中填充日期并根据值
【发布时间】:2021-08-03 04:14:10
【问题描述】:

我正在为股票交易构建一个回测系统,并拥有一个订单数据框。 Date_buy 表示购买 Name_buy 时。开关表示买卖新股票。

Date_buy    Name_buy
0   2003-05-14  TLT
1   2004-01-14  TLT
2   2004-04-14  VO
3   2004-07-14  TLT
4   2005-01-03  VO
... ... ...
70  2019-11-01  VO
71  2020-02-03  TLT
72  2020-04-01  VO
73  2020-07-01  TLT
74  2020-09-01  VO

我想填写日期并保留每个日期的值:

Date_buy    Name_buy
0   2003-05-14  TLT
1   2003-05-15  TLT
2   2003-05-16  TLT
3   2003-05-17  TLT
4   2003-05-18  TLT
... ... ...
70  2019-11-01  VO
71  2019-11-02  VO
72  2019-11-03  VO
73  2019-11-04  VO
74  2019-11-05  VO

显然,在上面的示例中,2019 VO 日期的索引数字会高得多。

我尝试关注此solution,但没有成功。它返回正确的日期,但所有其他值都为 0,由填充 = 0 引起。

idx = pd.period_range(min(df.date), max(df.date))
    ...: results.reindex(idx, fill_value=0)

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    首先转换您的列Date_buy(如果尚未完成)。将其设置为索引并使用resamplepad 来获取结果。

    # Convert Date_buy to datetime
    df['Date_buy'] = pd.to_datetime(df['Date_buy'])
    
    df = df.set_index('Date_buy').resample('D').pad().reset_index()
    
    >>> df
           Date_buy Name_buy
    0    2003-05-14      TLT
    1    2003-05-15      TLT
    2    2003-05-16      TLT
    3    2003-05-17      TLT
    4    2003-05-18      TLT
    ...         ...      ...
    6316 2020-08-28      TLT
    6317 2020-08-29      TLT
    6318 2020-08-30      TLT
    6319 2020-08-31      TLT
    6320 2020-09-01       VO
    

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 2020-12-06
      相关资源
      最近更新 更多