使用以下方法计算两个日期之间的差异时:
df_test['Difference'] = (df_test['First_Date'] - df_test['Second Date'])
我得到第三列" x天"。
我如何转换" x天"进入int" x"。例如," 50天"进入" 50"?
前一个帖子中有人建议使用:
df_test['Difference'] = (df_test['First_Date'] - df_test['Second Date']).dt.days
但是使用它我收到类型错误:
"'系列'对象没有属性' dt"
我该如何解决这个问题?
答案 0 :(得分:0)
如果是字符串变量。然后你可以做以下事情并剥离不需要的部分。 (比如你的变量是xDays)
df["xDays"] = df["xDays"].map(lambda x: x[:-5])
如果它是timedelta值,您可以执行以下操作
df["xDays"].dt.days
答案 1 :(得分:0)
如果我坚持你的代码,但填写了补充数据,这个修改对我有用。基本上,您将df_test['Difference'].dt.days
重新分配给df_test['Difference']
:
df_test=pd.DataFrame(dict(zip(['First_Date', 'Second_date'], [pd.date_range("2018-01-01",periods=10), pd.date_range("2017-01-01",periods=10)])))
df_test['Difference'] = df_test['First_Date'].sub(df_test['Second_date'], axis=0)
df_test['Difference']=df_test['Difference'].dt.days
答案 2 :(得分:0)
功能
def duration(diff):
tsec = diff.total_seconds()
hh = int(tsec//3600)
mm = int((tsec%3600)//60)
ss = int((tsec%3600)%60)
return('{:02d}:{:02d}:{:02d}'.format(hh,mm,ss))
测试结果:
import datetime as dt
d1 = dt.datetime(2020, 10, 21, 10, 15, 12) - dt.datetime(2020, 10, 20, 8, 5, 12)
d2 = dt.datetime(2020, 10, 21, 10, 15, 12) - dt.datetime(2020, 10, 21, 8, 0, 0)
d3 = dt.datetime(2020, 10, 21, 10, 15, 12) - dt.datetime(2020, 10, 22, 10, 5, 0)
print(duration(d1)) # 26:10:00
print(duration(d2)) # 02:15:12
print(duration(d3)) # -24:10:12
输出
26:10:00
02:15:12
-24:10:12