Skip to main content
 首页 » 编程设计

python之将未填充的 m/d/y 格式的日期转换为 python pandas 中的日期时间

2025年05月04日14kevingrace

我知道类似的问题已被问过一百万次,但我实际上找不到这个特定的答案,这似乎应该是数据清理中非常常见的情况。

我有一列日期作为字符串,没有填充,采用美式布局,所以 2009 年 2 月 19 日是 2/19/09。

我正在尝试将它们转换为 python pandas 中的日期时间

这是示例数据:

member  state   country         zip         joined .   pet 
16081   NY      UNITED STATES   11215       9/4/09 .   parrot 
21186   NY      UNITED STATES   5325        8/9/11 .   crunchyfrog 
34999   NY      UNITED STATES   11218       11/4/16    lumberjack 
34999   NY      FOOBAR STATES   NaN         11/4/16    blind bat 
5033    NY      UNITED STATES   11238-1630  11/7/16    norwegianblue 
35079   NY      FOOBAR STATES   SW4 9JX     11/13/16 . spanishinq    
35084   NY      UNITED STATES   11217-2181  11/14/16 . spam 

我最近的尝试是

for x in df['joined']: 
    x = dt.strptime(x, '%m/%d/%Y') 

返回“时间数据‘2/16/09’与格式‘%m/%d/%Y’不匹配”

请您参考如下方法:

尝试 to_datetime :

df.joined = pd.to_datetime(df.joined) 
print (df) 
   member state        country         zip     joined            pet 
0   16081    NY  UNITED STATES       11215 2009-09-04         parrot 
1   21186    NY  UNITED STATES        5325 2011-08-09    crunchyfrog 
2   34999    NY  UNITED STATES       11218 2016-11-04     lumberjack 
3   34999    NY  FOOBAR STATES         NaN 2016-11-04      blind bat 
4    5033    NY  UNITED STATES  11238-1630 2016-11-07  norwegianblue 
5   35079    NY  FOOBAR STATES     SW4 9JX 2016-11-13      panishinq 
6   35084    NY  UNITED STATES  11217-2181 2016-11-14           spam 

如有必要,您还可以指定格式:

df.joined = pd.to_datetime(df.joined, format='%m/%d/%y') 
print (df) 
   member state        country         zip     joined            pet 
0   16081    NY  UNITED STATES       11215 2009-09-04         parrot 
1   21186    NY  UNITED STATES        5325 2011-08-09    crunchyfrog 
2   34999    NY  UNITED STATES       11218 2016-11-04     lumberjack 
3   34999    NY  FOOBAR STATES         NaN 2016-11-04      blind bat 
4    5033    NY  UNITED STATES  11238-1630 2016-11-07  norwegianblue 
5   35079    NY  FOOBAR STATES     SW4 9JX 2016-11-13      panishinq 
6   35084    NY  UNITED STATES  11217-2181 2016-11-14           spam