Return Dataframe With Range Of Dates
I need a Python function to return a Pandas DataFrame with range of dates, only year and month, for example, from November 2016 to March 2017 and have this as result: year month 2
Solution 1:
Are you looking at something like this?
pd.date_range('November 2016', 'April 2017', freq = 'M')
You get
DatetimeIndex(['2016-11-30', '2016-12-31', '2017-01-31', '2017-02-28',
'2017-03-31'],
dtype='datetime64[ns]', freq='M')
To get dataframe
index = pd.date_range('November 2016', 'April 2017', freq = 'M')
df = pd.DataFrame(index = index)
Solution 2:
pd.Series(pd.date_range('2016-11', '2017-4', freq='M').strftime('%Y-%m')) \
.str.split('-', expand=True) \
.rename(columns={0: 'year', 1: 'month'})
year month
0201611120161222017 01
32017 02
42017 03
Solution 3:
You can use a combination of pd.to_datetime
and pd.date_range
.
import pandas as pd
start='November 2016'end='March 2017'
s = pd.Series(pd.date_range(*(pd.to_datetime([start, end]) \
+ pd.offsets.MonthEnd()), freq='1M'))
Construct a dataframe using the .dt
accessor attributes.
df=pd.DataFrame({'year':s.dt.year,'month':s.dt.month})dfmonthyear01120161122016212017322017432017
Post a Comment for "Return Dataframe With Range Of Dates"