обработка дат в pandas - PullRequest
       1

обработка дат в pandas

1 голос
/ 21 февраля 2020

Я читаю файл csv, используя pandas, а в csv есть столбцы даты, представляющие собой смесь строк и целых чисел и упорядоченные в порядке возрастания, пример показан ниже:

Date 
Dec 01 2010 
40513 
12/1/10 
12/1/10 9:00 
40513

Попробовал приведенный ниже код, чтобы игнорировать значения не как дата,

df['Date'] = pd.to_datetime(df['Date'], errors='coerce')

print(df.tail(20))
Date
2010-12-01 00:00:00.000
NULL
2010-12-01 00:00:00.000
2010-12-01 00:00:00.000
2010-12-01 00:00:00.000
NULL

Я хочу добавить «30 -12-1899» эту дату к числам, что-то вроде df['Date'] = pd.to_datetime('30-12-1899') + pd.DateOffset(df['Date']) и хочу, чтобы мои результаты были:

Date
2010-12-01 00:00:00.000
2010-12-01 00:00:00.000
2010-12-01 00:00:00.000
2010-12-01 00:00:00.000
2010-12-01 00:00:00.000
2010-12-01 00:00:00.000

1 Ответ

2 голосов
/ 21 февраля 2020

Идея заключается в преобразовании даты и времени в Series, называемое date, затем фильтрации непроверенных дат и добавлении DateOffset, последнего использования Series.combine_first или Series.fillna для замены. пропущенные значения:

dates = pd.to_datetime(df['Date'],errors='coerce')
dates1 = (df.loc[dates.isna(), 'Date'].apply(lambda x: pd.DateOffset(days=int(x))) + 
                                                            pd.to_datetime('30-12-1899'))

df['Date'] = dates.combine_first(dates1)
print (df)
                 Date
0 2010-12-01 00:00:00
1 2010-12-01 00:00:00
2 2010-12-01 00:00:00
3 2010-12-01 09:00:00
4 2010-12-01 00:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...