如何在 Pandas 中一次将多列数据类型格式转换为另一种数据类型格式而不提及列名?

How to convert multiple columns datatype format to another datatype formats at a time in Pandas without mentioning column names?

我的数据框有超过 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次。我正在寻找另一种简单的方法。

感谢任何帮助

一个简单的方法是 select 具有 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()

注意:在大数据帧上,我不知道这种方法的速度。

我认为如果使用 apply 和默认 axis=0 它按列循环,所以它应该像 axis=1 一样更快按行循环:

df1 = df.select_dtypes('datetime64')
df[df1.columns] = df1.apply(lambda x: x.dt.strftime('%Y-%m-%d'))