Pandas'Timestamp'对象不可订阅

时间:2018-04-06 20:03:36

标签: python pandas

我有一个Dataframe,我正在尝试运行两个不同的应用操作:

last_consumption_of_year_index = df.loc[(df['date'].dt.month == 12) &
                                  (df['date'].dt.day == 31) &
                                  (df['date'].dt.hour == 23) &
                                  (df['date'].dt.minute == 30)].index[0]


df.loc[:last_consumption_of_year_index]['date'] = df.loc[:last_consumption_of_year_index]['date'].apply(lambda x: x['date'].replace(year=current_year-1))
df.loc[last_consumption_of_year_index+1:]['date'] = df.loc[last_consumption_of_year_index+1:]['date'].apply(lambda x: x['date'].replace(year=current_year))

我想要做的是将时间戳的年份替换为current_year-1以及last_consumption_of_year_index之前的所有内容,并将current_year替换为之后的所有内容。

但是我收到了错误:

TypeError: 'Timestamp' object is not subscriptable

在lambdas里面。我该如何访问日期对象?

此外,如果这不是最好的方法,那么有人会提出更好的方法吗?

1 个答案:

答案 0 :(得分:2)

我相信你的lambda函数中可能存在一个错误,并且存在['date']。尝试将lambda x: x['date'].replace(year=current_year-1)替换为lambda x: x.replace(year=current_year-1),因为您的方法apply()位于Serie而不是Dataframe上。

lambda x: x['date'].replace(year=current_year)

lambda x: x.replace(year=current_year)相同