My data sets looks like:
Date Value
1/1/1988 0.62
1/2/1988 0.64
1/3/1988 0.65
1/4/1988 0.66
1/5/1988 0.67
1/6/1988 0.66
1/7/1988 0.64
1/8/1988 0.66
1/9/1988 0.65
1/10/1988 0.65
1/11/1988 0.64
1/12/1988 0.66
1/13/1988 0.67
1/14/1988 0.66
1/15/1988 0.65
1/16/1988 0.64
1/17/1988 0.62
1/18/1988 0.64
1/19/1988 0.62
1/20/1988 0.62
1/21/1988 0.64
1/22/1988 0.62
1/23/1988 0.60
I used this code to read this data:
df.set_index(df['Date'], drop=False, append=False, inplace=False, verify_integrity=False).drop('Date', 1)
But the problem is the index is not in date format. So the question is how to set this column as date index?
In order to set index to column in pandas DataFrame use reset_index() method. By using this you can also set single, multiple indexes to a column. If you are not aware by default, pandas adds an index to each row of the pandas DataFrame.
date attribute outputs an Index object containing the date values present in each of the entries of the DatetimeIndex object. Example #1: Use DatetimeIndex. date attribute to find the date part of the DatetimeIndex object.
To reset the index in pandas, you simply need to chain the function . reset_index() with the dataframe object. On applying the . reset_index() function, the index gets shifted to the dataframe as a separate column.
Your question lacked a proper explanation, but you can do the following:
In [75]:
# convert to datetime
df['Date'] = pd.to_datetime(df['Date'])
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 23 entries, 0 to 22
Data columns (total 2 columns):
Date 23 non-null datetime64[ns]
Value 23 non-null float64
dtypes: datetime64[ns](1), float64(1)
memory usage: 448.0 bytes
In [76]:
# set the index
df.set_index('Date', inplace=True)
df.info()
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 23 entries, 1988-01-01 to 1988-01-23
Data columns (total 1 columns):
Value 23 non-null float64
dtypes: float64(1)
memory usage: 368.0 bytes
So here to_datetime will convert date strings to datetime dtype, set_index with param inplace=True is all you need,
If you're loading data from a file, use parse_dates and index_col at load time, e.g.:
df = pd.read_csv('data.csv', parse_dates=['Date'], index_col=['Date'])
# Value
# Date
# 1988-01-01 0.62
# 1988-01-02 0.64
# ...
# 1988-01-23 0.60
df.index
# DatetimeIndex(['1988-01-01', '1988-01-02', ..., '1988-01-23'],
# dtype='datetime64[ns]', name='Date', freq=None)
parse_dates is supported by most of the read_* methods:
read_csvread_excelread_fwfread_htmlread_sqlread_sql_queryread_sql_tableread_tableIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With