gpt4 book ai didi

python - 在 Pandas 数据框中查找最近日期时间的索引

转载 作者:行者123 更新时间:2023-12-02 02:22:37 24 4
gpt4 key购买 nike

我有一个数据框,其中包含一列日期时间、过去和 future 。有没有办法找到最近日期时间的索引?

我不能假设每个日期时间都是唯一的,也不能假设它们是按顺序排列的。

如果最近的日期时间不唯一,则应返回所有相关的索引。

import pandas as pd
from datetime import datetime as dt

df = pd.read_excel('file.xlsx')
# Create datetime column
df['datetime'] = pd.to_datetime(df['Date'].astype(str) + ' ' + df['Time'].astype(str))
print(df['datetime'])

Out[1]:
0 2021-02-13 09:00:00
1 2021-02-13 11:00:00
2 2021-02-13 12:00:00
3 2021-02-13 15:00:00
4 2021-02-13 18:00:00
5 2021-02-13 16:45:00
6 2021-02-13 19:00:00
7 2021-02-13 19:00:00
8 2021-02-13 20:30:00
9 2021-02-14 01:30:00
Name: datetime, dtype: datetime64[ns]

最佳答案

独特的日期时间...

一个方便的选择是使用 get_loc方法DatetimeIndex 。例如:

import pandas as pd

df = pd.DataFrame({'datetime': pd.to_datetime(['2021-01-01', '2021-02-01', '2021-02-14'])})

# today is 2021-2-13, so most recent would be 2021-2-1:
pd.DatetimeIndex(df['datetime']).get_loc(pd.Timestamp('now'), method='pad')
# 1

您还可以将日期时间列设置为索引,将上面的内容简化为df.index.get_loc(pd.Timestamp('now'), method='pad')


日期时间列中有重复项...

上面显示的日期时间索引方法在这里不起作用。相反,您可以先获取值,然后获取索引:

df = pd.DataFrame({'datetime': pd.to_datetime(['2021-02-01', '2021-01-01', '2021-02-01', '2021-02-14'])})

# most recent datetime would be 2021-2-1 at indices 0 and 2
mr_date = df['datetime'].loc[(df['datetime'] - pd.Timestamp('now') <= pd.Timedelta(0))].max()
mr_idx = df.index[df['datetime'] == mr_date]

mr_idx
# Int64Index([0, 2], dtype='int64')

关于python - 在 Pandas 数据框中查找最近日期时间的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66186839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com