Как поместить временные метки в python и назначить метки - PullRequest
0 голосов
/ 21 мая 2018

Это мой фрейм данных:

ID : A, B, C, D, ...
Time: 2:44PM, 3:23AM, 5:00PM, 12:00AM, ...

Я бы хотел распределить время по бинам, например:

12:00AM to 6:00AM: 0 
6:00AM to 12:00PM: 1 
12:00PM to 6:00PM: 2 
6:00PM to 12:00AM: 3

Таким образом, вывод должен быть:

ID: A, B, C, D, ...
T_flag: 2, 0, 2, 3, ...

Я пытался использовать pd.cut и другие методы, но так как я новичок в Python, я не смог найти желаемый результат ни одним методом.

1 Ответ

0 голосов
/ 21 мая 2018

Поскольку вы хотите объединить данные в зависимости от часа, самый простой способ - сначала преобразовать их в 24-часовой формат, а затем использовать pd.cut.

df = pd.DataFrame({'ID': ['A', 'B', 'C', 'D'], 'Time': ['2:44PM', '3:23AM', '5:00PM', '12:00AM']})

df['Time'] = pd.to_datetime(df['Time'], format='%I:%M%p').dt.hour
df['T_flag'] = pd.cut(df['Time'], bins=np.array([-1,0,6,12,18,24]), labels=[3,0,1,2,3])

Это даст:

ID  Time  T_flag
A    14        2
B     3        0
C    17        2
D     0        3

Первый (-1,0] бин необходим для преобразования 12:00 AM в метку 3. Преобразование этого значения в datetime даст 0, что по умолчанию даст ему метку 0 (с первым бином (-1,6] или include_lowest=True).

...