Разделите одну строку на несколько строк данных за 6 часов на основе 15-минутного интервала времени в фрейме данных pandas

Я хочу разделить одну строку на несколько строк данных за 6 часов на основе 15-минутного интервала времени в фрейме данных pandas.

    start_time          end_time    
0   2022-08-22 00:15:00 2022-08-22 06:15:00

Я пробовал разделить время на один час и использовал код ниже

result['start_time'] = result.apply(lambda d: pd.date_range(d['start_time'],
                                                    d['end_time'], 
                                                    freq='h')[:-1], 
                            axis=1) 

и это сработало для меня, чтобы получить это

   result["start_time"][0]

Выход:

DatetimeIndex(['2022-08-22 00:15:00', '2022-08-22 01:15:00',
               '2022-08-22 02:15:00', '2022-08-22 03:15:00',
               '2022-08-22 04:15:00', '2022-08-22 05:15:00'],
              dtype='datetime64[ns]', freq='H')

теперь мне нужна частота для 15-минутного временного интервала, поэтому она должна дать мне метку времени 24

Это может помочь вам встать на правильный путь: stackoverflow.com/questions/70869654/…

ScottC 26.11.2022 07:56
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
109
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

from datetime import timedelta

df = pd.DataFrame({'start_time': ['2022-08-22 00:15:00'],'end_time': ['2022-08-22 06:15:00']})
df['start_time'] = pd.to_datetime(df['start_time'])
df['end_time'] = pd.to_datetime(df['end_time'])
df['start_time'] = df['start_time'].dt.strftime('%Y-%m-%d %H:%M:%S')
df['end_time'] = df['end_time'].dt.strftime('%Y-%m-%d %H:%M:%S')

#             start_time             end_time
# 0  2022-08-22 00:15:00  2022-08-22 06:15:00

new_df = pd.date_range(start=df['start_time'][0], end=df['end_time'][0], freq='15min')[:-1]
result_df = pd.DataFrame({'start_time': new_df, 'end_time': new_df + timedelta(minutes=15)})

выход:

> result_df

      start_time            end_time
0  2022-08-22 00:15:00 2022-08-22 00:30:00
1  2022-08-22 00:30:00 2022-08-22 00:45:00
2  2022-08-22 00:45:00 2022-08-22 01:00:00
3  2022-08-22 01:00:00 2022-08-22 01:15:00
4  2022-08-22 01:15:00 2022-08-22 01:30:00
5  2022-08-22 01:30:00 2022-08-22 01:45:00
6  2022-08-22 01:45:00 2022-08-22 02:00:00
7  2022-08-22 02:00:00 2022-08-22 02:15:00
8  2022-08-22 02:15:00 2022-08-22 02:30:00
9  2022-08-22 02:30:00 2022-08-22 02:45:00
10 2022-08-22 02:45:00 2022-08-22 03:00:00
11 2022-08-22 03:00:00 2022-08-22 03:15:00
12 2022-08-22 03:15:00 2022-08-22 03:30:00
13 2022-08-22 03:30:00 2022-08-22 03:45:00
14 2022-08-22 03:45:00 2022-08-22 04:00:00
15 2022-08-22 04:00:00 2022-08-22 04:15:00
16 2022-08-22 04:15:00 2022-08-22 04:30:00
17 2022-08-22 04:30:00 2022-08-22 04:45:00
18 2022-08-22 04:45:00 2022-08-22 05:00:00
19 2022-08-22 05:00:00 2022-08-22 05:15:00
20 2022-08-22 05:15:00 2022-08-22 05:30:00
21 2022-08-22 05:30:00 2022-08-22 05:45:00
22 2022-08-22 05:45:00 2022-08-22 06:00:00
23 2022-08-22 06:00:00 2022-08-22 06:15:00
Ответ принят как подходящий

Пытаться: 15T вместо h

result['start_time'] = result.apply(lambda d: pd.date_range(d['start_time'],
                                                    d['end_time'], 
                                                    freq='15T')[:-1], 
                            axis=1) 

ВЫХОД:

DatetimeIndex(['2022-08-22 00:15:00', '2022-08-22 00:30:00',
               '2022-08-22 00:45:00', '2022-08-22 01:00:00',
               '2022-08-22 01:15:00', '2022-08-22 01:30:00',
               '2022-08-22 01:45:00', '2022-08-22 02:00:00',
               '2022-08-22 02:15:00', '2022-08-22 02:30:00',
               '2022-08-22 02:45:00', '2022-08-22 03:00:00',
               '2022-08-22 03:15:00', '2022-08-22 03:30:00',
               '2022-08-22 03:45:00', '2022-08-22 04:00:00',
               '2022-08-22 04:15:00', '2022-08-22 04:30:00',
               '2022-08-22 04:45:00', '2022-08-22 05:00:00',
               '2022-08-22 05:15:00', '2022-08-22 05:30:00',
               '2022-08-22 05:45:00', '2022-08-22 06:00:00'],
              dtype='datetime64[ns]', freq='15T')

Как и ожидалось - вы получаете свои 24 метки времени

Другие вопросы по теме