#python #python-3.x #pandas #datetime
Вопрос:
У меня есть два столбца в фрейме данных Pandas, один из которых содержит дату в виде строки, а другой — час дня в виде int.
Я хочу преобразовать это в метку даты и времени.
Мне это удалось, но я чувствую, что это происходит медленно.
Данные являются:
df = pd.DataFrame({'Date': {0: '01/12/2017', 1: '01/12/2017', 2: '01/12/2017', 3: '01/12/2017', 4: '01/12/2017'}, 'Hour': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4}, 'Rented Bike Count': {0: 254, 1: 204, 2: 173, 3: 107, 4: 78}})
где типы Date
данных есть object
и Hour
есть int64
и в настоящее время я объединяю дату и час, используя:
# Generate the datetime column df['datetime'] = pd.to_datetime(df.apply(lambda x: f"{x['Date']} {x['Hour']}:00:00", axis=1)) # Remove the old datetime columns df = df.drop('Date', axis=1).drop('Hour', axis=1)
Есть ли более быстрый способ сделать это?
Ответ №1:
Я бы сделал:
# is your data day-first or month-first? df['datetime'] = pd.to_datetime(df['Date'], dayfirst=True) pd.to_timedelta(df['Hour'], unit='H') df = df.drop(['Date','Hour'], axis=1)
Комментарии:
1. Это то, что я искал. Изо всех сил пытался найти
pd.to_timedelta()
работу. Кроме того, сегодня первый день.