Дата серийный номер и дату необходимо конвертировать в формат даты - PullRequest
0 голосов
/ 01 октября 2019

когда я читаю электронную таблицу Google в фрейме данных, получая данные в формате ниже

42836
42837
42838
42844
42845
42846
42849
42850
42851
2/1/2018
2/2/2018

Но мне нужно конвертировать все в формате даты

Ответы [ 2 ]

3 голосов
/ 01 октября 2019

IIUC устанавливает дату origin и использует np.where, исходя из моего опыта, происхождение в Excel - 30 декабря 1899 года.

s1=pd.to_datetime(pd.to_numeric(df.date,errors='coerce'),errors='coerce',origin='1899-12-30',unit='D')
s2=pd.to_datetime(df.date,errors='coerce')
df['new']=np.where(df.date.str.contains('/'),s2,s1)
df
Out[282]: 
       date        new
0     42837 2017-04-12
1     42838 2017-04-13
2     42844 2017-04-19
3     42845 2017-04-20
4     42846 2017-04-21
5     42849 2017-04-24
6     42850 2017-04-25
7     42851 2017-04-26
8  2/1/2018 2018-02-01
9  2/2/2018 2018-02-02
0 голосов
/ 01 октября 2019

Используйте datetime с timedelta. базовый год 1.1.1900, затем добавьте дни как timedelta. цикл for просто показывает первые три даты. если вам нужен другой формат, используйте strftime ("% Y-% m-% d% H:% M:% S", gmtime ())

import datetime as dt
date = dt.datetime(1900,1,1)
dates = [42836, 42837, 42838]
for aDay in dates:<br>
    print(date+dt.timedelta(days=aDay))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...