В вашем варианте решения не полностью и не вполне корректно определен шаблон.
Исходя из документации, шаблон можно написать так: %b %d %Y %H: +0
, таймзону можно не откусывать (если она всегда +0).
df['Data1'] = pd.to_datetime(df.Data, format='%b %d %Y %H: +0')
print(df, f'\nТип данных: {df.Data1.dtypes}')
Data Data1
0 Aug 12 2023 11: +0 2023-08-12 11:00:00
1 Jul 30 2023 18: +0 2023-07-30 18:00:00
2 Apr 10 2023 01: +0 2023-04-10 01:00:00
Тип данных: datetime64[ns]
Есть вариант с "откусыванием" таймзоны без применения шаблона:
df['Data1'] = df.Data.str[:-4].astype('datetime64[ns]')
print(df, f'\nТип данных: {df.Data1.dtypes}')
Data Data1
0 Aug 12 2023 11: +0 2023-08-12 11:00:00
1 Jul 30 2023 18: +0 2023-07-30 18:00:00
2 Apr 10 2023 01: +0 2023-04-10 01:00:00
Тип данных: datetime64[ns]
Но первый вариант более точный и правильный, на мой взгляд
Дополнение. Если таймзона может быть +/- и с разным кол-вом знаков, то можно разрезать строку по двоеточию и дальше отработать по шаблону с первой частью строки:
test_list = [['Aug 12 2023 11: -0005'], ['Jul 30 2023 18: +3'], ['Apr 10 2023 01: +12']]
df = pd.DataFrame(data=test_list, index=None, columns=['Data'])
df['Data1'] = pd.to_datetime(df.Data.str.split(':', expand=True)[0], format='%b %d %Y %H')
print(df, f'\nТип данных: {df.Data1.dtypes}')
Data Data1
0 Aug 12 2023 11: -0005 2023-08-12 11:00:00
1 Jul 30 2023 18: +3 2023-07-30 18:00:00
2 Apr 10 2023 01: +12 2023-04-10 01:00:00
Тип данных: datetime64[ns]