Конвертировать Matlab Datenumb в python datetime - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть DF, который выглядит следующим образом (это данные Matlab):

    datesAvail    date
0       737272  737272
1       737273  737273
2       737274  737274
3       737275  737275
4       737278  737278
5       737279  737279
6       737280  737280
7       737281  737281

Читая в Интернете, я хотел преобразовать дату и время Matlab в дату Python, используя следующее решение, найденное здесь

python_datetime = datetime.fromordinal(int(matlab_datenum)) + timedelta(days=matlab_datenum%1) - timedelta(days = 366)

, где matlab_datenum в моем случае равно DF ['date'] или DF ['dateAvail']

Я получаю ошибку TypeError: cannot convert the series to <class 'int'>

обратите внимание, что тип данныхis int

Out [102]:

datesAvail    int64
date          int64
dtype: object

Я не уверен, где я иду не так.Любая помощь очень ценится

1 Ответ

0 голосов
/ 29 ноября 2018

Я не уверен, что вы ожидаете получить в результате этого, но я предполагаю, что это список?

Ошибка говорит вам, что именно, вы пытаетесь преобразовать серию с int().Единственные аргументы, которые может принимать int, - это строки, байтообразные объекты или числа.

Когда вы вызываете DF['date'], он дает вам серию, поэтому его необходимо преобразовать в число (или строку, или байт).), поэтому вам нужен цикл for для перебора всей серии.Сначала я изменил бы его на список, выполнив DF['date'].tolist()

Если вы хотите получить вывод в виде списка, вы можете сделать понимание списка, как показано здесь (извините, это долго);

python_datetime_list = [datetime.fromordinal(int(i)) + timedelta(days=i%1) - timedelta(days = 366) for i in DF['date'].tolist()]
...