pandas read_csv разбирает иностранные даты - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь использовать read_csv в файле .csv, который содержит столбец даты. Проблема в том, что столбец даты написан на иностранном языке (румынский) с такими записями, как:

'26 сентября 2017 '

'13 июль 2017 '

и т.д.. Как я могу красиво разобрать это в фрейм данных pandas, который имеет формат даты США?

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

вы можете передать конвертер для этого столбца:

df = pd.read_csv(myfile, converters={'date_column': foreign_date_converter})

Но сначала вы должны определить конвертер, чтобы делать то, что вы хотите. Этот подход использует манипулирование языком:

def foreign_date_converter(text):
    # Resets locale to "ro_RO" to parse romanian date properly
    # (non thread-safe code)
    loc = locale.getlocale(locale.LC_TIME)
    locale.setlocale(locale.LC_TIME, 'ro_RO')
    date = datetime.datetime.strptime(text '%d %b %Y').date()
    locale.setlocale(locale.LC_TIME, loc) # restores locale
    return date
0 голосов
/ 06 сентября 2018

Использовать dateparser модуль.

import dateparser
df = pd.read_csv('yourfile.csv', parse_dates=['date'], date_parser=dateparser.parse)

Введите имя столбца даты в параметре parse_dates. Я просто принимаю это как date

У вас может быть такой вывод:

      date
0   2017-09-26    
1   2017-07-13      

Если вы хотите изменить формат, используйте strftime strftime

df['date'] = df.date.dt.strftime(date_format = '%d %B %Y')

выход:

      date
0   26 September 2017
1        13 July 2017
0 голосов
/ 05 сентября 2018

Самое простое решение - просто использовать в 12 раз функцию str.replace(old, new).

Это не красиво, но если вы только что создали функцию:

def translater(date_string_with_exatly_one_date):
    date_str = date_string_with_exatly_one_date
    date_str = date_str.replace("iulie", "july")
    date_str = date_str.replace("septembrie", "september")
    #do this 10 more times with the right translation
    return date_str

Теперь вам просто нужно вызывать его для каждой записи. После этого вы можете обрабатывать его как строку даты в США. Это не очень эффективно, но оно выполнит работу, и вам не придется искать специальные библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...