我有一个Python数据框,其中包含一个带有日期时间的列,如下所示 2019-01-02 09:00:00(即2019年1月2日上午9点)
“日期时间”列中可能有一堆具有相同日期的行。
换句话说,我可以有 2019-01-02 09:00:00 或 2019-01-02 09:15:00 或 2019-01-02 09:30:00 等等。
现在我需要在 Python 数据框中查找日期 2019-01-02 第一次出现的行索引。
我显然使用循环来做到这一点,但我想知道是否有更好的方法。
与 df['Date Time'].str.contains()
方法,我可以获得与给定日期匹配的所有行,但我需要索引。
一般问题是我们如何找到与给定字符串模式匹配的 Python 数据帧中单元格中第一次出现的匹配项的索引。
更具体的问题是,我们如何找到 Python 数据框中单元格中第一次出现的匹配项的索引,该匹配项与包含日期时间的单元格中的给定日期相匹配假设Python 数据框按日期时间的时间升序排序,即 2019-01-02 09:00:00 出现在早于 2019-01-02 09:15:00 的索引处,然后是 2019-01-03 09:00:00 等等。
感谢您的贡献
最佳答案
您可以将 next
与 iter
结合使用作为第一个索引值匹配条件,以防止在没有匹配值时失败:
df = pd.DataFrame({'dates':pd.date_range(start='2018-01-01 20:00:00',
end='2018-01-02 02:00:00', freq='H')})
print (df)
dates
0 2018-01-01 20:00:00
1 2018-01-01 21:00:00
2 2018-01-01 22:00:00
3 2018-01-01 23:00:00
4 2018-01-02 00:00:00
5 2018-01-02 01:00:00
6 2018-01-02 02:00:00
date = '2018-01-02'
mask = df['dates'] >= date
idx = next(iter(mask.index[mask]), 'not exist')
print (idx)
4
date = '2018-01-08'
mask = df['dates'] >= date
idx = next(iter(mask.index[mask]), 'not exist')
print (idx)
not exist
如果性能很重要,请参阅 Efficiently return the index of the first value satisfying condition in array .
关于python - 如何查找Python数据框中单元格中第一次出现匹配的行索引(包含日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54255890/