0
我想将日期观察值从一列转换为我的数据框的索引。我可以用下面的代码来做到这一点:在自定义函数中使用set_index
的样本数据:
test = pd.DataFrame({'Values':[1,2,3], 'Date':["1/1/2016 17:49","1/2/2016 7:10","1/3/2016 15:19"]})
索引代码:
test['Date Index'] = pd.to_datetime(test['Date'])
test = test.set_index('Date Index')
test['Index'] = test.index.date
但是当我尝试包括在一个函数的代码,我可以创建'日期索引'列,但似乎没有按预期工作。
def date_index(df):
df['Date Index'] = pd.to_datetime(df['Date'])
df = df.set_index('Date Index')
df['Index'] = df.index.date
如果我检查不使用功能info()
返回的输出:
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 3 entries, 2016-01-01 17:49:00 to 2016-01-03 15:19:00
Data columns (total 3 columns):
Date 3 non-null object
Values 3 non-null int64
Index 3 non-null object
dtypes: int64(1), object(2)
memory usage: 96.0+ bytes
如果我检查功能info()
返回的输出:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 2 columns):
Date 3 non-null object
Values 3 non-null int64
dtypes: int64(1), object(1)
memory usage: 120.0+ bytes
我想DatetimeIndex
。
如何在一个函数内使用?我使用不正确?
test.info()的'的输出'使用函数时是不同的。我想要一个DatetimeIndex。请参阅编辑以提问。 –
有趣的是,对我来说它很好。请检查编辑。 – jezrael
你输出的区别在于你使用了'date_index(df1).info()',我正在使用'df1.info()'。我认为这种区别很重要,因为如果您使用自定义的'date_index()'函数,我最终在dataframe上使用'df1.index.values',从而得到不同的结果。 –