Timedelta计算显示最大范围的熊猫

时间:2020-06-25 13:50:28

标签: python pandas date datetime

嗨,我需要计算2 <div class="row"> <div class="form-group col-sm-3"> <label>Net Carbs</label> <input type="number" class="form-control " name="carbs" placeholder="Net Carbs" onkeyup="if(parseInt(this.value)>500){ this.value =500; return false; } if(parseInt(this.value)<0){ this.value =0; return false; }" required=""> </div> <div class="form-group col-sm-3"> <label>Proteins</label> <input type="number" class="form-control " name="proteins" placeholder="Proteins" onkeyup="if(parseInt(this.value)>500){ this.value =500; return false; } if(parseInt(this.value)<0){ this.value =0; return false; }" required=""> </div> <div class="form-group col-sm-3 "> <label>Total Fats</label> <input type="number" class="form-control " name="fats" placeholder="Total Fats" onkeyup="if(parseInt(this.value)>500){ this.value =500; return false; } if(parseInt(this.value)<0){ this.value =0; return false; }" required=""> </div> <div class="form-group col-sm-3 "> <label>Unit Calories</label> <input type="number" class="form-control " name="calories" placeholder="Unit Calories" onkeyup="if(parseInt(this.value)>500){ this.value =500; return false; } if(parseInt(this.value)<0){ this.value =0; return false; }" readonly> </div> </div> 之间的差异

然而,这使我回到了最大的三角洲,那是不真实的。 我不理解为什么会发生此错误,这是因为两个日期的格式相同。

datetime64[ns]

但是在执行以下操作之后

df1=
              entrada      First_Time_log
0    2020-06-09 01:50:00 2020-06-09 03:13:22
1    2020-06-10 01:50:00 2020-06-10 02:31:31
2    2020-06-11 01:50:00 2020-06-11 02:00:07
3    2020-06-12 01:50:00 2020-06-12 03:39:59
4    2020-06-13 01:50:00 2020-06-13 04:05:28
...                  ...                 ...
4255 2020-06-02 01:50:00 2020-06-02 02:00:02
4256 2020-06-03 01:50:00 2020-06-03 02:09:16
4257 2020-06-04 01:50:00 2020-06-04 01:20:14
4258 2020-06-05 01:50:00 2020-06-05 01:11:39
4259 2020-06-06 01:50:00 2020-06-06 01:35:11 

它返回最大范围,因此bitwenn日期的范围小于24小时。 我做错了什么?

dfc['entrada-first'] = dfc['entrada'] -  dfc['First_Time_log']

2 个答案:

答案 0 :(得分:2)

似乎您想要timedelta的绝对值?例如

import pandas as pd
# example df:
df = pd.DataFrame({'entrada': pd.to_datetime(['2020-06-03 01:50:00','2020-06-04 01:50:00']),
                   'First_Time_log': pd.to_datetime(['2020-06-03 02:09:16','2020-06-04 01:20:14'])})
# Python's built-in abs works fine here:
df['td_abs'] = abs(df['entrada']-df['First_Time_log'])
# df['td_abs']
# 0   00:19:16
# 1   00:29:46
# Name: td_abs, dtype: timedelta64[ns]

答案 1 :(得分:1)

尝试如下计算时差:

enter image description here

def find_time_difference(x):
    if x["entrada"] >= x["First_Time_log"]:
        return x["entrada"] - x["First_Time_log"]
    elif x["entrada"] <= x["First_Time_log"]:
        return x["First_Time_log"] - x["entrada"]
    return ''
df["entrada-first"] = df.apply(lambda x: find_time_difference(x), axis=1)

输出:

enter image description here