gpt4 book ai didi

python - 使用日期时间索引获取静态时间之前的分钟数

转载 作者:行者123 更新时间:2023-12-05 04:38:55 25 4
gpt4 key购买 nike

我有一个带有日期时间索引的数据框,我想使用列计算获取每一行当天下午 4:00(或 16:00)之前剩余的分钟数。

使用来自 this post 的答案,我们可以创建一个带有一些随机日期时间的空数据框并将其分配给索引:

def random_datetimes_or_dates(start, end, out_format='datetime', n=10): 
(divide_by, unit) = (10**9, 's') if out_format=='datetime' else (24*60*60*10**9, 'D')
start_u = start.value//divide_by
end_u = end.value//divide_by
return pd.to_datetime(np.random.randint(start_u, end_u, n), unit=unit)

start = pd.to_datetime('2019-01-01')
end = pd.to_datetime('2021-12-31')

index = random_datetimes_or_dates(start, end, out_format='datetime')
df = pd.DataFrame(index=index)

例如,如果索引 n 处的日期时间为 2021-11-29 15:30:00,则该行的新列中的值应为 30。如果是在16:00之后,这个数字可以是负数。

我最初尝试的是这样的:

df['Minutes_Until_4PM'] = datetime.strptime("1600", "%H%M").time() - df.index.time()

...但这给出了错误:

TypeError: 'numpy.ndarray' object is not callable

...这很好,但我什至不确定我是否以正确的方式解决这个问题,这个错误可能只是因为我提供的可重现代码,但你明白我的意思尝试这样做,而不使用 for 循环。

最佳答案

一个选择是将您的日期时间转换为时间戳(以秒为单位),取一天中秒数的模数(只保留自午夜以来的秒数),从两者之间的秒数中减去它午夜和下午 4 点,然后除以 60 得到分钟数:

df['Minutes_Until_4PM'] = ((16 * 60 * 60) - df.timestamp.mod(24 * 60 * 60)) // 60

请注意,//会覆盖除法,这可能不是您正在寻找的行为类型...

关于python - 使用日期时间索引获取静态时间之前的分钟数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70501655/

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