如何获取特定行号的日期时间索引值

Posted

技术标签:

【中文标题】如何获取特定行号的日期时间索引值【英文标题】:How to obtain the datetime index value at a specific row number 【发布时间】:2021-03-06 19:13:52 【问题描述】:

我正在使用如下所示的数据框:

time                           value
2020-08-02 21:00:00+00:00        4  
2020-08-02 21:01:00+00:00        2
2020-08-02 21:02:00+00:00        3
2020-08-02 21:03:00+00:00        2  
2020-08-02 21:04:00+00:00        2
2020-08-02 21:05:00+00:00        3
2020-08-02 21:06:00+00:00        3
2020-08-02 21:07:00+00:00        3
2020-08-02 21:08:00+00:00        4
2020-08-02 21:09:00+00:00        4
2020-08-02 21:10:00+00:00        5

我想在第 9 行获取日期时间索引值(即在日期时间“2020-08-02 21:08:00+00:00”)

当我使用时:

 print('Datetime at position 9 is %s' % df[df['value']==df.iat[9,0]].index[0])

我最终得到:

Datetime at row 9 is 2020-08-02 21:00:00+00:00  

但我期望:

Datetime at row 9 is 2020-08-02 21:08:00+00:00  

我相信这是因为值“4”出现在我的 df 中较早,但这不是我正在寻找的日期时间值。我确信有一个快速解决方案,但由于某种原因,我无法理解它。

(搜索了以前的问题,这些问题看起来都非常相似,但并没有完全解决这个用例。)

【问题讨论】:

【参考方案1】:

保持简单:)

print('Datetime at position 9 is %s' % df.iat[9,0])

如果可能,最好动态获取列名:

df.iat[9, df.columns.get_loc("time")]

为什么您的解决方案失败了:

df[df['value']==df.iat[9,0]].index[0]

让我们分解一下:

df[...].index[0] 将采用 df[...] 返回的任何内容,获取索引,并返回该索引的第 0 个元素。

df['value']==df.iat[9,0] 将为您提供等于位置9,0 的所有值的df。您现在拥有以下 df:

time                           value
2020-08-02 21:00:00+00:00        4  
2020-08-02 21:08:00+00:00        4
2020-08-02 21:09:00+00:00        4

数据帧的索引设置为时间,因此.index 为我们提供了时间:

time
2020-08-02 21:00:00+00:00 
2020-08-02 21:08:00+00:00
2020-08-02 21:09:00+00:00

现在我们得到第 0 个元素:2020-08-02 21:00:00+00:00

【讨论】:

感谢您的快速回复。出于某种原因,使用“df.iat[9,0]”给了我该位置的实际值(即“4”),但我在日期时间索引值之后【参考方案2】:
print('Datetime at position 9 is %s' % df.index[9])

感谢 Noah - 感谢您的详细解释 - 这让我思考

【讨论】:

以上是关于如何获取特定行号的日期时间索引值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 char 数组的特定索引处获取实际值

excle vba,如何查找一个已知值的行号和列号?

Pytorch Tensor 如何获取特定值的索引

如何在列表中获取特定值的索引 - python [重复]

如何获取特定 JetBrains.ReSharper.Psi.IDeclaredElement 的文件名和行号?

Pandas 获取具有复合索引的数据帧的行号