Pandas - 检查是否有任何列是日期时间并将其更改为日期格式字符串(yyyy-mm-dd)

MMS*_*MMS 5 python datetime pandas

我们如何使用 pandas 检查是否有任何列是日期时间数据类型列,然后仅将该列转换为日期格式字符串 (yyyy-mm-dd) 数据类型列。

我有多个日期时间列。因此,我无法按列名称进行更改。但更喜欢一种检查然后更改它的方式。

请帮我解决这个问题。

ank*_*_91 4

df = pd.DataFrame(data={'date':(['2018-12-08 00:00:00','2018-12-08 00:10:00','2018-12-08 01:10:00']),'B':[5,4,3],'C':[4,3,2]})

>>df

    date                B   C
0   2018-12-08 00:00:00 5   4
1   2018-12-08 00:10:00 4   3
2   2018-12-08 01:10:00 3   2

>>df.dtypes

date     object
B        int64
C        int64

>>df[df.select_dtypes(['object']).columns]=df[df.select_dtypes(['object']).columns].apply(pd.to_datetime)
Run Code Online (Sandbox Code Playgroud)

发布此内容后,您可以调用dt.date该系列,例如:

>>df['date'].dt.date
0    2018-12-08
1    2018-12-08
2    2018-12-08
Run Code Online (Sandbox Code Playgroud)

或者选择多个列(注意,如果您有任何其他与日期不相似的对象列,上面的操作可能会失败,在这种情况下,请使用如下所示)

df[['col1','col2']] = df[['col1','col2']].apply(pd.to_datetime)
Run Code Online (Sandbox Code Playgroud)

来自文档:unuderselect_dtypes

要选择日期时间,请使用 np.datetime64、'datetime' 或 'datetime64' 要选择时间增量,请使用 np.timedelta64、'timedelta' 或 'timedelta64