gpt4 book ai didi

python - 如何仅减去 2 个 Pandas 列中的时间(不包括日期)?

转载 作者:行者123 更新时间:2023-12-04 10:29:04 24 4
gpt4 key购买 nike

查找有关此信息的时间很糟糕。我每天都在跟踪几个完成时间,以根据目标完成时间来衡量它们。

我正在将完成日期和时间读入 Pandas 数据框中,并使用 df.map 映射完成时间字典以在数据框中创建“目标时间”列。

样本数据:

Date                  Process
1/2/2020 10:20:00 AM Test 1
1/2/2020 10:25:00 AM Test 2
1/3/2020 10:15:00 AM Test 1
1/3/2020 10:00:00 AM Test 2

使用 df.map() 创建一个包含目标时间的列:
goalmap={
'Test 1':dt.datetime.strptime('10:15', '%H:%M'),
'Test 2':dt.datetime.strptime('10:30', '%H:%M')}
df['Goal Time']=df['Process'].map(goalmap)

然后我试图创建一个新的“Delta”列,以分钟为单位计算两者之间的时间差。我遇到的大多数问题都与数据类型有关。我让它通过使用 pd.to_datetime 转换第一列(日期)来计算时差,但是因为我的“目标时间”列不存储日期,它计算了一个巨大的增量(回到 1900 年)。我也试过解析日期时间列中的时间无济于事。

仅计算时间戳之间差异的最佳方法是什么?

最佳答案

我推荐 timedeltadatetime :

goalmap={
'Test 1': pd.to_timedelta('10:15:00'),
'Test 2': pd.to_timedelta('10:30:00') }
df['Goal Time']=df['Process'].map(goalmap)

df['Goal_Timestamp'] = df['Date'].dt.normalize() + df['Goal Time']

df['Meet_Goal'] = df['Date'] <= df['Goal_Timestamp']

输出:
                 Date Process Goal Time      Goal_Timestamp  Meet_Goal
0 2020-01-02 10:20:00 Test 1 10:15:00 2020-01-02 10:15:00 False
1 2020-01-02 10:25:00 Test 2 10:30:00 2020-01-02 10:30:00 True
2 2020-01-03 10:15:00 Test 1 10:15:00 2020-01-03 10:15:00 True
3 2020-01-03 10:00:00 Test 2 10:30:00 2020-01-03 10:30:00 True

关于python - 如何仅减去 2 个 Pandas 列中的时间(不包括日期)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60496593/

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