MMS*_*MMS 5 python datetime pandas
我们如何使用 pandas 检查是否有任何列是日期时间数据类型列,然后仅将该列转换为日期格式字符串 (yyyy-mm-dd) 数据类型列。
我有多个日期时间列。因此,我无法按列名称进行更改。但更喜欢一种检查然后更改它的方式。
请帮我解决这个问题。
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