首页 > 解决方案 > 如何将列中的所有数据转换为日期时间 - 熊猫

问题描述

我有一个大型数据框,在其date列中混合了日期格式(只有 2 种)。

大多数格式正确,但有些数据格式不同。

即大多数是2013-11-07。有些是20170510. 当我尝试针对我拥有的模式验证代码时,Pandas 会引发异常。

有没有一种快速的方法可以将所有日期转换为与大多数日期相同的格式?还是我必须做一些更痛苦/手动的事情?

IE

             date                      \
0            2013-11-07                False   
2            2013-11-07                False      
...               ...    ...    ...         ...                  ...   
3595037      20170510                  NaN   
3595038      20200701                  NaN   

标签: pythonpandasdatetime

解决方案


有没有一种快速的方法可以将所有日期转换为与大多数日期相同的格式?

考虑到您只有两种格式,一种由它表示2013-11-07,另一种由20170510它表示足以-从第一个删除以获得通用格式,即

import pandas as pd
df = pd.DataFrame({'day':['2013-11-07','20170510']})
df['day'] = df['day'].str.replace('-','')
print(df)

输出

        day
0  20131107
1  20170510

pandas.to_datetime确实理解正确

df['day'] = pd.to_datetime(df['day'])
print(df)

输出

         day
0 2013-11-07
1 2017-05-10

免责声明:我转换为少数而不是多数的格式。可以使用正则表达式将其转换为多数格式,但是如果您对日期时间对象感兴趣,这是不必要的复杂化。


推荐阅读