2017-02-18 17 views
1

У меня есть DataFrame, у которого есть индекс (uid) и 9 переменных, которые являются датами в настоящее время как строки.Применение to_datetime ко всем столбцам, кроме индекса

мне удалось преобразовать их времени даты с pd.to_datetime, но я хочу сделать это для всех columnns без записи команды для всех столбцов, по одному, как это:

initData['invited'] = pd.to_datetime(initData['invited'], dayfirst = True) 
initData['sign_up'] = pd.to_datetime(initData['sign_up'], dayfirst = True) 
initData['card_activated'] = pd.to_datetime(initData['card_activated'], dayfirst = True) 

Как я могу сделать это более элегантный? Я попробовал .apply, но получаю сообщение об ошибке, потому что он пытается преобразовать индекс dataframe в datetime.

ответ

1

apply Использование:

initData = initData.apply(pd.to_datetime, dayfirst=True) 
#same as 
#initData = initData.apply(lambda x: pd.to_datetime(x, dayfirst = True)) 

Пример:

initData = pd.DataFrame({'A':['01-01-2017','02-01-2017','03-01-2017'], 
        'B':['05-01-2017','06-01-2017','07-01-2017'], 
        'C':['01-01-2017','02-01-2017','03-01-2017']}) 

print (initData) 
      A   B   C 
0 01-01-2017 05-01-2017 01-01-2017 
1 02-01-2017 06-01-2017 02-01-2017 
2 03-01-2017 07-01-2017 03-01-2017 

initData = initData.apply(pd.to_datetime, dayfirst=True) 

print (initData) 
      A   B   C 
0 2017-01-01 2017-01-05 2017-01-01 
1 2017-01-02 2017-01-06 2017-01-02 
2 2017-01-03 2017-01-07 2017-01-03 

print (initData.dtypes) 
A datetime64[ns] 
B datetime64[ns] 
C datetime64[ns] 
dtype: object 
+0

Спасибо так много! Это сработало отлично. –