Извлечение даты из строковой даты китайских символов в Python - PullRequest
1 голос
/ 05 марта 2020

Учитывая китайский столбец даты следующим образом:

            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

1 Ответ

1 голос
/ 05 марта 2020

Для меня работа с удаленными датами выборки add и изменения format в to_datetime Функция:

def date_manipulate(x):
    x = x.str.split('日').str[0]
    x = pd.to_datetime(x, format='%Y年%m月%d', errors='coerce').dt.date
    return x

df[['time']] = df[['time']].apply(date_manipulate)
print (df)
         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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...