Pandas无法通过时间戳进行索引

2024-04-19 12:00:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个程序,在每个月的第一天输入sims数据,我遇到了一个按日期时间索引的问题。下面是代码片段:

  print(self.calendar_month.index[0])
  print(index)
  print(type(self.calendar_month.index[0]))
  print(type(index))
  data={
    #Position
    'verbose':False,
    'return_dict':True,
    'segment_center':np.array(self.calendar_month[index].tolist()).reshape((2,2)),

returns:
2022-01-01 00:00:00
2022-01-01 00:00:00
<class 'pandas._libs.tslibs.timestamps.Timestamp'>
<class 'pandas._libs.tslibs.timestamps.Timestamp'>

KeyError: Timestamp('2022-01-01 00:00:00')

我有一个按日期索引的数据框,叫做日历月。 我还有一个日期索引,都是时间戳。print语句显示它存在于日历月的第0个索引处,它们是确切的类型和值,为什么我会得到一个键错误


1条回答
网友
1楼 · 发布于 2024-04-19 12:00:41

IIUC:

考虑样本数据框:

calendar_month = pd.DataFrame(data={'date':pd.date_range(datetime(2021, 1, 1), datetime(2021, 1, 10)),
                                    'value': np.arange(1,11)})
calendar_month.set_index('date', inplace=True)
print(calendar_month)

            value
date             
2021-01-01      1
2021-01-02      2
2021-01-03      3
2021-01-04      4
2021-01-05      5
2021-01-06      6
2021-01-07      7
2021-01-08      8
2021-01-09      9
2021-01-10     10

现在让我们检查一下索引:

index = calendar_month.index[0]
print(index)
2021-01-01 00:00:00

print(type(calendar_month.index[0]))
<class 'pandas._libs.tslibs.timestamps.Timestamp'>

现在,当您尝试执行此操作时:

calendar_month[index]

您正试图以列的形式访问2021-01-01 00:00:00,而该列在您的数据帧中肯定不存在,这就是为什么它会出现以下错误:KeyError: Timestamp('2021-01-01 00:00:00')

您需要做的是:

print(calendar_month.loc[index]) #Prints row with specified index as series.

value    1
Name: 2021-01-01 00:00:00, dtype: int32

相关问题 更多 >