代码之家  ›  专栏  ›  技术社区  ›  kamome

如何在数据帧中舍入日期时间索引?

  •  6
  • kamome  · 技术社区  · 6 年前

    有这样一个数据帧:

    index
    2018-06-01 02:50:00     R 45.48 -2.8 
    2018-06-01 07:13:00     R 45.85 -2.0  
    ... 
    2018-06-01 08:37:00     R 45.87  -2.7
    

    我想把索引四舍五入到如下时间:

    index
    2018-06-01 02:00:00     R 45.48 -2.8 
    2018-06-01 07:00:00     R 45.85 -2.0  
    ... 
    2018-06-01 08:00:00     R 45.87  -2.7
    

    df = df.date_time.apply ( lambda x : x.round('H'))
    

    但是返回一个序列,而不是带有修改的索引列的数据帧

    3 回复  |  直到 6 年前
        1
  •  4
  •   Space Impact    6 年前

    floor :

    df.index.floor('H')
    

    设置:

    df = pd.DataFrame(np.arange(25),index=pd.date_range('2018-01-01 01:12:50','2018-01-02 01:12:50',freq='H'),columns=['Value'])
    df.head()
                        Value
    2018-01-01 01:12:50 0
    2018-01-01 02:12:50 1
    2018-01-01 03:12:50 2
    2018-01-01 04:12:50 3
    2018-01-01 05:12:50 4
    
    df.index = df.index.floor('H')
    df.head()
                        Value
    2018-01-01 01:00:00 0
    2018-01-01 02:00:00 1
    2018-01-01 03:00:00 2
    2018-01-01 04:00:00 3
    2018-01-01 05:00:00 4
    
        2
  •  3
  •   iPrince    6 年前

    试试我的方法:

    按小时的舍入值添加新列:

    df['E'] = df.index.round('H')

    df1 = df.set_index('E')

    删除您设置的名称(此处为“E”):

    df1.index.name = None

    现在,df1是一个新的数据帧,索引小时从df取整。

        3
  •  2
  •   MikiBelavista    6 年前

    df['index'].apply(lambda dt: datetime.datetime(dt.year, dt.month, dt.day, dt.hour,60*(dt.minute // 60)))