Как преобразовать формат данных нескольких столбцов в другой формат данных одновременно в Pandas без упоминания имен столбцов? - PullRequest
4 голосов
/ 20 января 2020

У меня есть фрейм данных с более чем 20 столбцами в формате datetime64[ns]. Я хочу конвертировать их все в stringtime. Есть ли простой способ сделать это.

Data.dtypes
LT_TOTAL                    float64
INSERT_DT            datetime64[ns]
M0_ACT_0400          datetime64[ns]
M0_ACT_0500          datetime64[ns]
M2_ACT_1100          datetime64[ns]
M1_ACT_1240          datetime64[ns]
M3_ACT_1305          datetime64[ns]
M4_ACT_1400          datetime64[ns]
M5_ACT_1600          datetime64[ns]
M6_ACT_2990          datetime64[ns]
M7_ACT_3000                  object

Обычный способ

data.loc[:,'M4_INI_1400'] =data.loc[:,'M4_INI_1400'].dt.strftime('%Y-%m-%d')

В настоящее время, если есть 20 столбцов, мне нужно повторить это утверждение 20 раз. Я ищу альтернативный простой способ.

Любая помощь приветствуется

Ответы [ 2 ]

1 голос
/ 20 января 2020

Я думаю, что если использовать apply со значением по умолчанию axis=0, то оно l oop по столбцам, поэтому оно должно быть быстрее, как axis=1 с l oop по строкам:

df1 = df.select_dtypes('datetime64')
df[df1.columns] = df1.apply(lambda x: x.dt.strftime('%Y-%m-%d'))
1 голос
/ 20 января 2020

Простой способ - выбрать столбцы, имеющие dtype datetime64. Вырежьте их, stack и позвоните dt.strftime('%Y-%m-%d') и unstack и назначьте их обратно

cols = df.select_dtypes('datetime64').columns
df[cols] = df[cols].stack().dt.strftime('%Y-%m-%d').unstack()

Примечание : на большом кадре данных я не знаю о скорости этот метод.

...