Учитывая китайский столбец даты следующим образом:
time
0 2019年6月27日10时
1 2019年8月28日10时
2 2019年8月5日10时30分
3 2019年9月3日10时
4 2019年9月3日10时
5 2019年8月5日10时
В этом примере китайские символы 年, 月, 日, 时, 分
означают соответственно year, month, day, hour, minute
, я хочу извлечь из него дату. Приведенный ниже код работает, но мне просто интересно, возможно ли его упростить, особенно для str.replace
части.
def date_manipulate(x):
x = x.str.split('日').str[0].add('日')
#x = x.str.extract(r'([^d]+日)')
#x = x.str.extract('(.+日)')
x = x.str.replace('年', '-').str.replace('月', '-').str.replace('日', '')
x = pd.to_datetime(x, format='%Y-%m-%d', errors='coerce').dt.date
return x
df[['time']] = df[['time']].apply(date_manipulate)
Желаемому выводу понравится, спасибо.
time
0 2019-06-27
1 2019-08-28
2 2019-08-05
3 2019-09-03
4 2019-09-03
5 2019-08-05