我有像下面这样的熊猫数据框
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次。在大熊猫中还有更好的方法吗?
答案 0 :(得分:8)
我认为需要Series.dt.floor
和strftime
并按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