我有一个带时间戳索引的数据框。我想在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')
答案 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':]