Панда формат даты и времени - PullRequest
0 голосов
/ 28 февраля 2019

В настоящее время я работаю с 2,2 миллионами записей.Где два столбца состоят из membership_id и txn_time.Фрейм данных выглядит как -

membership_id          txn_time
 1                      2019-02-17 00:00:00.0
 2                      2018-04-23 00:00:00.0
 3                      2018-12-17 00:00:00.0
 4                      2019-02-17 00:00:00.0
 5                      2018-04-02 00:00:00.0
 6                      2018-09-10 06:20:58.0
 7                      2019-01-16 08:11:42.0

Я хочу, чтобы фрейм данных был похож -

membership_id          txn_time
 1                      2019-02-17 
 2                      2018-04-23 
 3                      2018-12-17 
 4                      2019-02-17 
 5                      2018-04-02 
 6                      2018-09-10
 7                      2019-01-16 

Что я сделал до сих пор -

df_txn['TXN_DATE'] = pd.to_datetime(df_txn['txn_time'], errors='coerce')

Но,это не работает, и количество записей огромно 2,2 млн.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Эта лямбда-функция поможет вам решить проблему без использования библиотеки datetime.

df['txn_time'] = df['txn_time'].apply(lambda x:x.split()[0])
0 голосов
/ 28 февраля 2019

Для повышения производительности используйте параметр format, затем преобразуйте в datetime без time s на dt.floor, лучше, если вам понадобится обработать данные позже с помощью функции datetimelike:

df_txn['TXN_DATE'] = pd.to_datetime(df_txn['txn_time'], 
                                    errors='coerce',
                                    format='%Y-%m-%d %H:%M:%S.%f').dt.floor('d')

или python date с dt.date, но получить object:

df_txn['TXN_DATE'] = pd.to_datetime(df_txn['txn_time'], 
                                    errors='coerce',
                                    format='%Y-%m-%d %H:%M:%S.%f').dt.date
...