我在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
包含字符串(否则不会有任何前导零)。