我有一个数据帧,其中有一些列。其中一个是日期,但有些日期的格式是年月日(例如:2022年5月3日(,有些日期的形式是年月日。如何将列中的所有日期更改为一种格式(例如:dd-mm-yy(?
初始数据帧:
序列号 | |
---|---|
0 | 2022年5月23日 |
1 | 2022年3月14日 |
2 | 2020年2月29日 |
我可以想出一个解决方案,根据日期字符串的长度处理两种不同的情况:
def format_date(date):
reformatter = {
"Jan": "01",
"Feb": "02",
"Mar": "03",
...
"Dec": "12"
}
if len(date) == 10:
return date
else:
return date[:4] + reformatter[date[3:6]] + date[6:]
df["Date"].apply(lambda x: format_date(x))
您可以尝试使用自动日期解析:
df['Date'] = (pd.to_datetime(df['Date'], infer_datetime_format=True)
.dt.strftime('%d-%m-%Y')
)
或者,使用str.replace
:
from calendar import month_abbr
d = dict(zip(month_abbr, [f'{i:02d}' for i in range(13)]))
df['Date'] = df['Date'].str.replace(r'[A-Z][a-z]+', lambda x: d.get(x.group(), x), regex=True)
输出:
Serial Date
0 0 23-05-2022
1 1 14-03-2022
2 2 29-02-2020