如何在半小时间隔内划分熊猫日期时间列

时间:2018-08-24 06:42:30

标签: python pandas

我有像下面这样的熊猫数据框

  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

所需的熊猫数据框

  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 个答案:

答案 0 :(得分:8)

我认为需要Series.dt.floorstrftime并按29Min个添加Timedelta

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