как разделить столбец даты и времени pandas на полчаса

у меня есть панды dataframe, как следующие

  date                      value     
  2018-02-12 17:30:00       23
  2018-02-12 17:34:00       45
  2018-02-12 17:36:00       23
  2018-02-12 17:45:00       56
  2018-02-12 18:37:00       54

желаемые панды dataframe

  date                      value        half_hourly_bucket  
  2018-02-12 17:30:00       23           17:30-17:59
  2018-02-12 17:34:00       45           17:30-17:59
  2018-02-12 17:36:00       23           17:30-17:59
  2018-02-12 17:45:00       56           17:30-17:59
  2018-02-12 18:37:00       54           18:30-18:59

как мудрый у меня есть данные за все 24 часа. Я не хочу использовать цикл if else для 48 раз. Есть ли лучший способ сделать это в панды?

1 ответов


Я считаю, что нужно Series.dt.floor С strftime и добавить 29Min by Timedeltas:

print (df)
                 date  value
0 2018-02-12 18:00:00     23 <-changed values
1 2018-02-12 17:34:00     45
2 2018-02-12 17:36:00     23
3 2018-02-12 17:45:00     56
4 2018-02-12 18:37:00     54

s = df['date'].dt.floor('30T')
s1 = s.dt.strftime('%H:%M') + '-' + (s + pd.Timedelta(29 * 60, unit='s')).dt.strftime('%H:%M')
print (s1)
0    18:00-18:29
1    17:30-17:59
2    17:30-17:59
3    17:30-17:59
4    18:30-18:59
Name: date, dtype: object