2016-01-21 8 views
12

Próbuję wygenerować zakres dat danych miesięcznych, gdzie dzień jest zawsze na początku miesiąca:Pandy DATE_RANGE do generowania danych miesięcznych na początku miesiąca

pd.date_range(start='1/1/1980', end='11/1/1991', freq='M') 

Generuje 1/31/1980, 2/29/1980 , i tak dalej. Zamiast tego, po prostu chcę 1/1/1980, 2/1/1980 ...

widziałem inne pytania prosimy o generowanie danych, które są zawsze w określonym dniu miesiąca, w odpowiedzi, mówiąc, że nie było to możliwe, ale początek miesiąca z pewnością musi być możliwe!

Odpowiedz

27

Można to zrobić poprzez zmianę freq argument z 'M' do 'MS':

d = pandas.date_range(start='1/1/1980', end='11/1/1990', freq='MS')  
print(d) 

Powinno to teraz druk:

DatetimeIndex(['1980-01-01', '1980-02-01', '1980-03-01', '1980-04-01', 
       '1980-05-01', '1980-06-01', '1980-07-01', '1980-08-01', 
       '1980-09-01', '1980-10-01', 
       ... 
       '1990-02-01', '1990-03-01', '1990-04-01', '1990-05-01', 
       '1990-06-01', '1990-07-01', '1990-08-01', '1990-09-01', 
       '1990-10-01', '1990-11-01'], 
       dtype='datetime64[ns]', length=131, freq='MS', tz=None) 

zajrzeć do offset aliases część dokumentacji. Tam stwierdza, że ​​'M' jest na koniec miesiąca (częstotliwość końca miesiąca), podczas gdy 'MS' na początku (częstotliwość początkowa miesiąca).

Powiązane problemy