2015-11-25 3 views
1

Когда я ввожу значение типа '2015-08', мой date_range работает по назначению. Если я использую переменную startdate, то она больше не работает? Я не могу понять, почему это было бы.date_range не принимает переменную, которую я хочу использовать?

Я получаю ошибку «не удается преобразовать свой вклад в Timestamp»

+0

Вы не пытаетесь пройти серию, когда функция подписи принимает строку или DATETIME, как значение: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.date_range. html – EdChum

+0

Я использовал этот пост в качестве ссылки, где увидел серию (использовать. map) http://stackoverflow.com/questions/19105976/get-mm-dd-yyyy-from-pandas-timestamp –

ответ

0

Не для точек. Я немного смущен, это не то, что вы делаете, просто в основном следующее:

Код:

from datetime import datetime, timedelta 

now = datetime.now() 
print now.strftime("%Y-%m") 
month_ago = now.replace(day=1) - timedelta(days = 1) 
print month_ago.strftime("%Y-%m") 
months_ago = month_ago.replace(day=1) - timedelta(days = 1) 
print months_ago.strftime("%Y-%m") 

Выход:

2015-11 
2015-10 
2015-09 

выше не может быть идеальным ответом, но вы можете заменить любой datetime для now и это даст вам в основном текущий и два последних месяцы. При необходимости отрегулируйте.

EDIT:

Вы можете даже сделать шаг вперед и просто создать функцию, которая позволяет указать номера месяцев назад или использовать собственную дату.

from datetime import datetime, timedelta 

def last_n_months(num_of_months, start_date=datetime.now(), include_curr=True): 
    f = "%Y-%m" 
    curr = start_date 
    if include_curr: 
     yield curr.strftime(f) 
    for num in range(num_of_months): 
     curr = curr.replace(day=1) - timedelta(days=1) 
     yield curr.strftime(f) 

# This month and last 12 months. 
print [m for m in last_n_months(12)] 
# ['2015-11', '2015-10', '2015-09', '2015-08', '2015-07', '2015-06', '2015-05', '2015-04', '2015-03', '2015-02', '2015-01', '2014-12', '2014-11'] 

# Last 12 months only. 
print [m for m in last_n_months(12, include_curr=False)] 
# ['2015-10', '2015-09', '2015-08', '2015-07', '2015-06', '2015-05', '2015-04', '2015-03', '2015-02', '2015-01', '2014-12', '2014-11']  

# Last 12 months from custom date, exclude custom date. 
d = datetime(2012, 6, 1) 
print [m for m in last_n_months(12, d, False)] 
# ['2012-05', '2012-04', '2012-03', '2012-02', '2012-01', '2011-12', '2011-11', '2011-10', '2011-09', '2011-08', '2011-07', '2011-06'] 
+0

Это функция была очень полезной и сделала то, что мне было нужно. Я также изменил его для других отчетов, которые я создаю, которые имеют ежедневные файлы (просто избавились от части .replace). С благодарностью –

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