清除python中的日期列

8gsdolmq  于 2022-12-05  发布在  Python
关注(0)|答案(2)|浏览(189)

请协助我在清理我的日期类型在Python。
我的示例数据如下:
| 开始日期|日期切割|给出日期|
| - -|- -|- -|
| 2022年7月1日|二零二二年七月二十一日|二零二二年七月十一日|
| 二零二二年七月十七日|2022年7月16日|2022年7月21日|
| 二○二二年七月十六日|2022年7月1日|2022年7月9日|
| 二〇二二年七月十九日|二零二二年七月三十一日|二零二二年七月二十七日|
如何删除不同列中日期的所有短划线/斜杠/连字符?我有8列300行。
"我尝试过的“

df[['INITIATION DATE', 'DATE CUT', 'DATE GIVEN']]= df[['INITIATION DATE', 'DATE CUT', 'DATE GIVEN']].apply(pd.to_datetime, format = '%d%b%Y')

所有所需的输出格式:二零二二年七月一日
得到的值错误:
时间数据“2022年7月18日”与格式“%d-%B-%Y”不匹配(匹配)

t2a7ltrp

t2a7ltrp1#

要从字符串中删除所有的破折号/斜杠/连字符,可以使用replace方法:

df.apply(lambda x: x.str.replace('[/-]',' ',regex=True))

>>>
'''
  INITIATION DATE      DATE CUT    DATE GIVEN
0     1 July 2022  21 July 2022  11 July 2022
1    17 July 2022  16 July 2022  21 July 2022
2    16 July 2022  01 July 2022  09 July 2022
3    19 July 2022  31 July 2022  27 July 2022

如果还需要将字符串转换为日期时间,请尝试以下操作:

df.apply(lambda x: pd.to_datetime(x.str.replace('[/-]',' ',regex=True)))

>>>
'''
  INITIATION DATE   DATE CUT DATE GIVEN
0      2022-07-01 2022-07-21 2022-07-11
1      2022-07-17 2022-07-16 2022-07-21
2      2022-07-16 2022-07-01 2022-07-09
3      2022-07-19 2022-07-31 2022-07-27
qni6mghb

qni6mghb2#

您可以使用pd.to_datetime将字符串转换为日期时间对象。该函数采用format参数,该参数使用常用的格式代码指定日期时间字符串的格式

df['INITIATION DATE'] = pd.to_datetime(df['INITIATION DATE'], format='%d-%B-%Y').dt.strftime('%d %B %Y')
df['DATE CUT'] = pd.to_datetime(df['DATE CUT'], format='%d %B %Y').dt.strftime('%d %B %Y')
df['DATE GIVEN'] = pd.to_datetime(df['DATE GIVEN'], format='%d/%B/%Y').dt.strftime('%d %B %Y')

输出

INITIATION DATE      DATE CUT    DATE GIVEN
0    01 July 2022  21 July 2022  11 July 2022
1    17 July 2022  16 July 2022  21 July 2022
2    16 July 2022  01 July 2022  09 July 2022
3    19 July 2022  31 July 2022  27 July 2022

出现该错误是因为日期时间字符串(例如'18 July 2022')与格式说明符('%d-%b-%Y')不匹配,原因是格式说明符中存在额外的连字符。

相关问题