Вы можете просто рассмотреть первую строку, чтобы определить , какие столбцы находятся в области видимости.Затем используйте pd.to_datetime
для выбранных столбцов через pd.DataFrame.apply
.Вот демо:
df = pd.DataFrame([['2018-01-01 00:00:00 UTC', 0, 341.3214, 'test1',
'2019-01-01 00:00:00 UTC'],
['2015-01-01 00:00:00 UTC', 46, 235.54, 'test2',
'2020-01-01 00:00:00 UTC']],
columns=['date1', 'int', 'float', 'string', 'date2'])
dt_format = '%Y-%m-%d %H:%M:%S UTC'
L = [pd.to_datetime(i, errors='coerce', format=dt_format) for i in df.iloc[0].values]
dt_cols = df.columns[pd.Series(L).notnull()]
df[dt_cols] = df[dt_cols].apply(pd.to_datetime, format=dt_format)
Результат:
print(df)
date1 int float string date2
0 2018-01-01 0 341.3214 test1 2019-01-01
1 2015-01-01 46 235.5400 test2 2020-01-01
print(df.dtypes)
date1 datetime64[ns]
int int64
float float64
string object
date2 datetime64[ns]
dtype: object