Возможно, я делаю это неправильно, или может быть гораздо лучший способ, чем этот, так как я все еще новичок в Python. Заранее извиняюсь за любые очевидные ошибки.
У меня есть Pandas Dataframe со столбцом STR, который содержит дату и время. Это STR, потому что время отформатировано, что означает, что в день 29 часов. поэтому мы увидим даты, такие как 01 января 2018 года 29:59:59.
Как 1 секунда к этому и его 02 / Jan / 2018 06: 00: 00.
Моя цель здесь - преобразовать эти данные в реальное время. Это означает, что любой час между 24 и 29 тоже требует смены даты.
Я уже разделил STR на 2 новых столбца ['Dt'] и ['Ti'] из ['Ti'], вытащил час к новой колонке как ['Hr'] и сделал его INT.
Затем я применил pd.to_datetime к ['Dt'] и добавил правило.
df['Dt'] = np.where(df['Hr'] > 23, df['Dt']+pd.DateOffset(1),df['Dt']+pd.DateOffset(0) )
это прекрасно работает.
Теперь мне нужно изменить час на реальное время, например, 24 = 00, 25 = 02 и т. Д.
Я подумал, что лучше всего использовать DICT и отобразить его, поэтому я сделал DICT,
HourMap = {'24':'00','25':'01','26':'02','27':'03','28':'04','29':'05','30':'06'}
Тогда написал это
df['Hr1'] = np.where(df['Hr'] > 23, df.replace({'Hr':HourMap}),df['Hr'])
Но я получаю "ValueError"
ValueError: operands could not be broadcast together with shapes (273,) (273,29) (273,)
Я посмотрел на эти строки в кадре данных, и они просто обычные INT. При тестировании я могу применить к ним математику (например, df ['Test'] = df ['Hr'] + 1.
Я преобразовал их в STR и попробовал те же правила, но получил ту же ошибку.
Я просто сумасшедший?
Спасибо