将时间戳索引与python中的固定日期进行比较

时间:2017-11-30 03:58:38

标签: python pandas numpy datetime timestamp

我有一个带时间戳索引的数据框。我想在2001-01-01之后删除带有时间戳索引的所有行。经过一些谷歌搜索,我得到了这个:

df.index[1].date() < pd.datetime.strptime('20010101', "%Y%m%d").date())

它工作正常,因为它显示第一个索引小于2001-01-01

所以我很乐意申请:

df.index.date() < pd.datetime.strptime('20010101', "%Y%m%d").date()

取而代之的是:

  

TypeError:&#39; numpy.ndarray&#39;对象不可调用。

让我了解索引的样子,当我输入时:

df.index[1]

它返回:

Timestamp('1964-01-03 00:00:00')

1 个答案:

答案 0 :(得分:1)

我不确定您是否正确设置索引。

您可以使用日期对数据框进行子集化。 https://chrisalbon.com/python/pandas_time_series_basics.html

import pandas as pd

data = {'date': ['2014-05-01 18:47:05.069722', '2014-05-01 18:47:05.119994', '2014-05-02 18:47:05.178768', '2014-05-02 18:47:05.230071', '2014-05-02 18:47:05.230071', '2014-05-02 18:47:05.280592', '2014-05-03 18:47:05.332662', '2014-05-03 18:47:05.385109', '2014-05-04 18:47:05.436523', '2014-05-04 18:47:05.486877'], 
        'battle_deaths': [34, 25, 26, 15, 15, 14, 26, 25, 62, 41]}
df = pd.DataFrame(data, columns = ['date', 'battle_deaths'])
df['date'] = pd.to_datetime(df['date'])
df.index = df['date']
df.drop(['date'], axis = 1, inplace = True)

df2 = df['2014-05-03':]