2016-07-25 2 views
1

Я пытаюсь создать date_range в европейском стиле dd/mm/yyyyПанды: европейский стиль DATE_RANGE

import pandas as pd 

rng = pd.date_range(start = '1/09/2016', periods = 10, dayfirst = True) 

Выход следующим образом:

DatetimeIndex(['2016-01-09', '2016-01-10', '2016-01-11', '2016-01-12', 
      '2016-01-13', '2016-01-14', '2016-01-15', '2016-01-16', 
      '2016-01-17', '2016-01-18'], 
      dtype='datetime64[ns]', freq='D') 

И я получаю тот же результат без dayfirst аргумента.

Что я делаю неправильно?

+0

Ничего, отображаемый формат будет отображаемым форматом вашей текущей среды, я не думаю, что 'dayfirst' является' kwarg', если вам нужен другой формат вывода, который вам нужно будет выполнить 'rng.strftime ('% d /% m/% Y ') ', но это даст вам строки, а не datetimes – EdChum

+0

Итак, нет другого способа генерации дат в европейском формате? –

+0

Нет, потому что то, что вы создаете, представляет собой массив 'datetimes', формат отображения - это совершенно другая вещь, которая для вашего удобства, базовый тип понимается при выполнении арифметических операций, действительно, формат отображения имеет значение, когда вы печатаете или отображение на графиках – EdChum

ответ

0

Вы можете использовать только DatetimeIndex.strftime, но потерял DatetimeIndex и получить list из strings:

print (rng.strftime('%d/%m/%Y')) 
['09/01/2016' '10/01/2016' '11/01/2016' '12/01/2016' '13/01/2016' 
'14/01/2016' '15/01/2016' '16/01/2016' '17/01/2016' '18/01/2016'] 

РЕД комментарием:

В случае необходимости ежедневной частоты, добавьте параметр freq в date_range и конвертировать to_datetimedate:

import pandas as pd 

rng = pd.date_range(start = pd.to_datetime('1/09/2016', dayfirst = True), 
        periods = 10, freq = 'D') 
print (rng) 
DatetimeIndex(['2016-09-01', '2016-09-02', '2016-09-03', '2016-09-04', 
       '2016-09-05', '2016-09-06', '2016-09-07', '2016-09-08', 
       '2016-09-09', '2016-09-10'], 
       dtype='datetime64[ns]', freq='D') 
+0

Итак, нет другого способа генерации дат в европейском формате? –

+0

Нет, datetime конвертируется таким же образом (стиль США), и если нужно его преобразовать, используйте это решение. – jezrael

+0

Но это неверно. Потому что дата начала я хочу 1 сентября 2016 года и частота 10 дней. Таким образом, следующая дата должна быть 2 сентября 2016 года. Поскольку созданные даты являются неправильными, преобразование, как вы предложили, не имеет смысла. –

Смежные вопросы