【问题标题】:Extend the dates in pandas column扩展 pandas 列中的日期
【发布时间】:2020-09-25 11:41:58
【问题描述】:

我有一个带有日期列的熊猫数据框。我必须延长上述月份的日期:

输入:

2019-11-30
2019-12-01
2019-12-02
2019-12-03
2019-12-04

输出:

2019-11-01
2019-11-02
2019-11-03
2019-11-04
2019-11-05
2019-11-06
2019-11-07
2019-11-08
2019-11-09
2019-11-10
2019-11-11
2019-11-12
2019-11-13
2019-11-14
2019-11-15
2019-11-16
2019-11-17
2019-11-18
2019-11-19
2019-11-20
2019-11-21
2019-11-22
2019-11-23
2019-11-24
2019-11-25
2019-11-26
2019-11-27
2019-11-28
2019-11-29
2019-11-30
2019-12-01
2019-12-02
2019-12-03
2019-12-04
2019-12-05
2019-12-06
2019-12-07
2019-12-08
2019-12-09
2019-12-10
2019-12-11
2019-12-12
2019-12-13
2019-12-14
2019-12-15
2019-12-16
2019-12-17
2019-12-18
2019-12-19
2019-12-20
2019-12-21
2019-12-22
2019-12-23
2019-12-24
2019-12-25
2019-12-26
2019-12-27
2019-12-28
2019-12-29
2019-12-30
2019-12-31

【问题讨论】:

    标签: python pandas date datetime


    【解决方案1】:

    date_rangeoffsets.MonthBeginoffsets.MonthEnd 创建所有日期时间:

    print (df)
             date  col
    0  2019-11-30    1
    1  2019-12-01    4
    2  2019-12-02    7
    3  2019-12-03    6
    4  2019-12-04    2
    
    
    df['date'] = pd.to_datetime(df['date'])
    
    rng = pd.date_range(df['date'].min() - pd.offsets.MonthBegin(),
                        df['date'].max() + pd.offsets.MonthEnd(), name='date')
    print (rng)
    DatetimeIndex(['2019-11-01', '2019-11-02', '2019-11-03', '2019-11-04',
                   '2019-11-05', '2019-11-06', '2019-11-07', '2019-11-08',
                   '2019-11-09', '2019-11-10', '2019-11-11', '2019-11-12',
                   '2019-11-13', '2019-11-14', '2019-11-15', '2019-11-16',
                   '2019-11-17', '2019-11-18', '2019-11-19', '2019-11-20',
                   '2019-11-21', '2019-11-22', '2019-11-23', '2019-11-24',
                   '2019-11-25', '2019-11-26', '2019-11-27', '2019-11-28',
                   '2019-11-29', '2019-11-30', '2019-12-01', '2019-12-02',
                   '2019-12-03', '2019-12-04', '2019-12-05', '2019-12-06',
                   '2019-12-07', '2019-12-08', '2019-12-09', '2019-12-10',
                   '2019-12-11', '2019-12-12', '2019-12-13', '2019-12-14',
                   '2019-12-15', '2019-12-16', '2019-12-17', '2019-12-18',
                   '2019-12-19', '2019-12-20', '2019-12-21', '2019-12-22',
                   '2019-12-23', '2019-12-24', '2019-12-25', '2019-12-26',
                   '2019-12-27', '2019-12-28', '2019-12-29', '2019-12-30',
                   '2019-12-31'],
                  dtype='datetime64[ns]', name='date', freq='D')
    

    然后使用DataFrame.reindex:

    df = df.set_index('date').reindex(rng).reset_index()
    print (df)
             date  col
    0  2019-11-01  NaN
    1  2019-11-02  NaN
    2  2019-11-03  NaN
    3  2019-11-04  NaN
    4  2019-11-05  NaN
    ..        ...  ...
    56 2019-12-27  NaN
    57 2019-12-28  NaN
    58 2019-12-29  NaN
    59 2019-12-30  NaN
    60 2019-12-31  NaN
    
    [61 rows x 2 columns]
    

    DataFrame.merge 左连接:

    df = pd.DataFrame({'date':rng}).merge(df, how='left')
    print (df)
             date  col
    0  2019-11-01  NaN
    1  2019-11-02  NaN
    2  2019-11-03  NaN
    3  2019-11-04  NaN
    4  2019-11-05  NaN
    ..        ...  ...
    56 2019-12-27  NaN
    57 2019-12-28  NaN
    58 2019-12-29  NaN
    59 2019-12-30  NaN
    60 2019-12-31  NaN
    
    [61 rows x 2 columns]
    

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 1970-01-01
      • 2017-11-28
      • 2021-02-12
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 2018-02-20
      相关资源
      最近更新 更多