в пандах, как я могу группировать по будням () для столбца datetime?

Я хотел бы отфильтровать выходные данные и просматривать данные только по будням (mon (0) -fri (4)). Я новичок в пандах, что лучший способ сделать это в пандах?

import datetime from pandas import * data = read_csv("data.csv") data.my_dt Out[52]: 0 2012-10-01 02:00:39 1 2012-10-01 02:00:38 2 2012-10-01 02:01:05 3 2012-10-01 02:01:07 4 2012-10-01 02:02:03 5 2012-10-01 02:02:09 6 2012-10-01 02:02:03 7 2012-10-01 02:02:35 8 2012-10-01 02:02:33 9 2012-10-01 02:03:01 10 2012-10-01 02:08:53 11 2012-10-01 02:09:04 12 2012-10-01 02:09:09 13 2012-10-01 02:10:20 14 2012-10-01 02:10:45 ... 

Я хотел бы сделать что-то вроде:

 weekdays_only = data[data.my_dt.weekday() < 5] 

AttributeError: объект 'numpy.int64' не имеет атрибута 'weekday'

но это не сработает, я не совсем понял, как доступны объекты столбца datetime.

Конечная цель состоит в том, чтобы упорядочивать иерархию по будним часам, например:

 monday, 0-6, 7-12, 13-18, 19-23 tuesday, 0-6, 7-12, 13-18, 19-23 

2 Solutions collect form web for “в пандах, как я могу группировать по будням () для столбца datetime?”

ваш вызов функции «weekday» не работает, поскольку он работает с индексом data.my_dt, который является массивом int64 (откуда приходит сообщение об ошибке)

вы можете создать новый столбец в данных, содержащих дни недели, используя что-то вроде:

 data['weekday'] = data['my_dt'].apply(lambda x: x.weekday()) 

то вы можете фильтровать по будням:

 weekdays_only = data[data['weekday'] < 5 ] 

надеюсь, это поможет

Более быстрый способ – использовать DatetimeIndex.weekday , например:

 temp = pd.DatetimeIndex(data['my_dt']) data['weekday'] = temp.weekday 

Гораздо быстрее, особенно для большого количества строк. Для получения дополнительной информации проверьте этот ответ.

Python - лучший язык программирования в мире.