【问题标题】:Pandas convert timeframes to indexesPandas 将时间范围转换为索引
【发布时间】:2019-11-20 19:06:25
【问题描述】:

您能否建议我一种将时间段转换为相应索引的简单方法?

我有一个函数可以根据我无法更改的数字索引(从第 10 行到第 20 行)从数据框中选择条目。同时,我的数据框有时间索引,我根据时间戳选择了其中的一部分。如何将这些时间戳转换为相应的数字索引?

非常感谢 亚历克斯

添加一些例子:

small_df.index[1]
Out[894]: Timestamp('2019-02-08 07:53:33.360000')

small_df.index[10]
Out[895]: Timestamp('2019-02-08 07:54:00.149000') # instead of time stamps.

这些是我想从具有时间索引的第二个数据帧中选择的时间段。但我想用数字索引来做到这一点 那意味着那时 1.找出上面的时间段对应的数值指标有哪些

根据上面的评论,这可能与我需要的非常接近:

start=second_dataframe.index.get_loc(pd.Timestamp(small_df.index[1]))

end=second_dataframe.index.get_loc(pd.Timestamp(small_df.index[10]))

picked_rows= second_dataframe[start:end]

有没有更好的方法来做到这一点?

【问题讨论】:

  • 您可以添加一些具有预期输出的数据样本吗?

标签: python pandas indexing time


【解决方案1】:

如果需要职位,我相信你需要Index.get_loc

small_df.index.get_loc(pd.Timestamp('2019-02-08 07:53:33.360000'))
1

编辑:如果值始终匹配,则可以先获取时间戳形式,然后通过 DataFrame.loc 提取第二行:

start = small_df.index[1]

end = small_df.index[10]

picked_rows = second_dataframe.loc[start:end]

或者L

start=pd.Timestamp(small_df.index[1])

end=pd.Timestamp(small_df.index[10])

picked_rows = second_dataframe.loc[start:end]

【讨论】:

  • start=second_dataframe.index.get_loc(pd.Timestamp(small_df.index[1])) end=second_dataframe.index.get_loc(pd.Timestamp(small_df.index[10]))pick_rows= second_dataframe[start:end] 有没有更好的方法?
  • @AlexP - 如果值始终匹配,可以先获取时间戳形式,然后通过DataFrame.loc提取第二行
猜你喜欢
  • 2020-10-18
  • 2014-12-17
  • 2018-10-30
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 2017-07-11
  • 2020-11-06
相关资源
最近更新 更多