【问题标题】:Pandas find closest value from timestamp index error熊猫从时间戳索引错误中找到最接近的值
【发布时间】:2021-11-03 09:47:17
【问题描述】:

我在尝试从时间戳中查找 pandas df 中的值时出错。 我的 df 有一个时间戳索引。

我的时间戳是:

time = datetime.datetime.fromtimestamp(sub_data_2[0, itime])
print(time)
2021-06-29 09:53:08.805039

我的 df 索引如下所示:

print(df.index)
DatetimeIndex(['2021-06-30 08:45:43', '2021-06-30 08:45:45',
               '2021-06-30 08:45:46', '2021-06-30 08:45:47',
               '2021-06-30 08:45:48', '2021-06-30 08:45:50',
               '2021-06-30 08:45:51', '2021-06-30 08:45:52',
               '2021-06-30 08:45:53', '2021-06-30 08:45:54',
               ...
               '2021-06-28 16:34:22', '2021-06-28 16:34:23',
               '2021-06-28 16:34:24', '2021-06-28 16:34:25',
               '2021-06-28 16:34:26', '2021-06-28 16:34:27',
               '2021-06-28 16:34:28', '2021-06-28 16:34:29',
               '2021-06-28 16:34:30', '2021-06-28 16:34:31'],
              dtype='datetime64[ns]', name='T', length=54143, freq=None)

使用 index.get_loc 函数:

index = df.index.get_loc(time, method='nearest')

错误是:

pandas.errors.InvalidIndexError: Reindexing only valid with uniquely valued Index objects

我看到这个错误可能来自具有索引冲突的数据帧的连接,但这里不是这种情况。 有什么想法吗?

【问题讨论】:

    标签: python pandas indexing


    【解决方案1】:

    您必须先从索引中删除重复项。这已经在这里回答了 - answer

    【讨论】:

      【解决方案2】:

      你可以像这样找到重复的索引:

      df[df.index.duplicated(keep=False)]
      

      【讨论】:

      • @KarlMontalban,请详细说明。这不应该解决它,它应该可以帮助您找到导致错误的重复项。
      • 最后我必须删除重复项并对索引进行排序。感谢您的帮助!
      • @KarlMontalban,很高兴我能提供帮助,如果答案有帮助,请考虑支持并接受它。它可以帮助未来的读者,并在接受答案时给我几点。
      【解决方案3】:

      我有两个问题:重复和排序时间戳索引。

      df = df.sort_index()
      df = df.drop_duplicates()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-12
        • 2015-08-19
        • 1970-01-01
        • 2016-07-19
        • 2019-06-08
        • 2020-12-06
        相关资源
        最近更新 更多