Pandas to_datetime имеет противоречивое поведение в неамериканские даты - PullRequest
0 голосов
/ 26 апреля 2018

Меня смущает поведение панд to_datetime в неамериканские даты.

В этом тривиальном примере Панды правильно выводит месяцы во 2-й и 3-й строке, но не в 1-й и 4-й.

Очевидно, что 2-я и 3-я строки обрабатываются как dd/mm/yyyy даты (потому что 13 и 27 явно не могут быть месяцами), но оставшиеся даты обрабатываются как mm/dd/yyyy.

Я ожидаю, что to_datetime будет выводить из всей серии, а затем обрабатывать каждую запись одинаково.

import pandas as pd 
results = pd.DataFrame()

european_dates = pd.Series(['05/04/2007',   # <-- April 5th, 2007
                            '13/04/2006',   # <-- April 13th, 2006
                            '27/12/2014',   # <-- December 27th, 2014
                            '02/07/2010'])  # <-- July 2nd, 2010 

# note: the same happens with infer_datetime_format=False
inferred_dates = pd.to_datetime(european_dates,
                                infer_datetime_format=True) 

results['day'] = inferred_dates.dt.day
results['month'] = inferred_dates.dt.month
results['year'] = inferred_dates.dt.year

results

enter image description here

Примечание: Мне известно, что to_datetime имеет аргумент dayfirst и аргумент formatмой вопрос в основном о том, почему infer_datetime_format терпит неудачу в таком тривиальном случае.

1 Ответ

0 голосов
/ 26 апреля 2018

Использование dayfirst in to_datetime

european_dates = pd.Series(['05/04/2007',   # <-- April 5th, 2007
                            '13/04/2006',   # <-- April 13th, 2006
                            '27/12/2014',   # <-- December 27th, 2014
                            '02/07/2010'])  # <-- July 2nd, 2010 
inferred_dates = pd.to_datetime(european_dates,dayfirst =True) 
results = pd.DataFrame()
results['day'] = inferred_dates.dt.day
results['month'] = inferred_dates.dt.month
results['year'] = inferred_dates.dt.year
results
Out[109]: 
   day  month  year
0    5      4  2007
1   13      4  2006
2   27     12  2014
3    2      7  2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...