Первый фрейм данных можно преобразовать в формат даты и времени с помощью pandas. Во втором кадре данных пропущены некоторые поля во входной строке времени. Как правильно преобразовать строки времени в объект datetime?
import pandas as pd
data = [
'+2h03m46s456ms',
]
df = pd.DataFrame(data, columns=['ts'])
df['ts'] = pd.to_datetime(df['ts'], format = "+%Hh%Mm%Ss%fms")
print(df)
data2 = [
'0',
'+456ms',
'+46s456ms',
'+3m46s456ms'
]
df2 = pd.DataFrame(data2, columns=['ts'])
#df2['ts'] = pd.to_datetime(df2['ts'], format = "+%Hh%Mm%Ss%fms")
print(df2)
Выход:
ts
0 1900-01-01 02:03:46.456
ts
0 0
1 +456ms
2 +46s456ms
3 +3m46s456ms
Это дельты времени, а не даты и времени. Используйте to_timedelta()
>>> pd.to_timedelta(pd.Series(data))
0 0 days 02:03:46.456000
dtype: timedelta64[ns]
>>> pd.to_timedelta(pd.Series(data2))
0 0 days 00:00:00
1 0 days 00:00:00.456000
2 0 days 00:00:46.456000
3 0 days 00:03:46.456000
dtype: timedelta64[ns]
Но если вы хотите, чтобы они были датой и временем, вы можете добавить их в t=0.
>>> pd.Timestamp(0) + pd.to_timedelta(pd.Series(data2))
0 1970-01-01 00:00:00.000
1 1970-01-01 00:00:00.456
2 1970-01-01 00:00:46.456
3 1970-01-01 00:03:46.456
dtype: datetime64[ns]
@ Lucky1928 Не то чтобы я об этом знал, но я сам не особо работал с timedeltas.
хороший ответ! какой-нибудь API для преобразования дельты времени обратно в исходную строку?