如何将Python Pandas中的部分列转换为日期?



我在Python中有Pandas数据框架,如下所示:

col1
------
00121088645
90110544547
02031134543
110588
  • 我需要从col1中的每个值中获取前6个元素,并根据它创建日期,并创建新列"birthday_date"这个日期
  • 如果col1的值以00开头,则表示2000而不是1900,例如90表示1990而不是1890或其他。我们计算生日日期,所以它只能是1900 +或2000+:)
  • 请注意!如果col1中的值没有11个元素,那么col2中的值必须为"0">

例如:

  • 00121088645 = 2000-12-10
  • 90110544547 = 1990-11-05
  • 02031134543 = 2002-03-11

所以我需要:

col1          birthday_date
-------------------------      
00121088645 | 2000-12-10
90110544547 | 1990-11-05
02031134543 | 2002-03-11
110588      | 0 

使用str访问器获取前6个字符,然后使用pd.to_datetime()format='%y%m%d'errors='coerce':

df['birthday_date'] = pd.to_datetime(df['col1'].str[:6], format='%y%m%d', errors='coerce')
#           col1 birthday_date
# 0  00121088645    2000-12-10
# 1  90110544547    1990-11-05
# 2  02031134543    2002-03-11
# 3       110588           NaT

fillna(0)替换NaT为0如果首选:

df['birthday_date'] = pd.to_datetime(df['col1'].str[:6], format='%y%m%d', errors='coerce').fillna(0)

注意,我假设col1包含字符串(否则不会有任何前导零)。

相关内容

  • 没有找到相关文章

最新更新