以日期时间格式查找两列数据之间的单个时间跨度,可能使用 for 循环

Posted

技术标签:

【中文标题】以日期时间格式查找两列数据之间的单个时间跨度,可能使用 for 循环【英文标题】:Finding individual timespans between two columns of data in datetime format, possibly using for loop 【发布时间】:2020-07-20 01:02:15 【问题描述】:

我是 Python 和一般编码的新手,我在编写一个 for 循环时遇到了问题,正如讲师所建议的那样,以查找动力装置的关闭和重新启动时间之间经过的时间。

我设法通过形成一个数据框来隔离我感兴趣的列:

oilSubData4 = pd.DataFrame(oilData[['Shutdown Date/Time', 'Restart Date/Time']])

我还设法将列转换为日期时间格式并删除了 NaT 行:

oilSubData4['Shutdown Date/Time'] = pd.to_datetime(oilSubData4['Shutdown Date/Time'])
oilSubData4['Restart Date/Time'] = pd.to_datetime(oilSubData4['Restart Date/Time'])
oilShutdownTime = oilSubData4.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

这一切最终形成了这个 image of the data I wish to find the individual timespans of

正是在这一点上,我努力寻找一种方法来找到每行数据的每次重启时间/日期和关机时间/日期之间的时间差。我对 for 循环没有经验,也不确定如何开始。

我的尝试如下:

for x in oilShutdownTime:
oilShutdownTime['time_diff'][x+1] = oilShutdownTime['Restart Date/Time'][x+1] - oilShutdownTime['Restart Date/Time'][x]

并显示以下错误:


TypeError Traceback(最近一次调用最后一次) 在 1 for x in oilShutdownTime: ----> 2 oilShutdownTime['time_diff'][x+1] = oilShutdownTime['重启日期/时间'][x+1] - oilShutdownTime['重启日期/时间'][x]

TypeError: 只能将 str(不是“int”)连接到 str

如果可能,请告知如何解决此问题。我知道我的代码可能完全不准确,因此感谢您的帮助,谢谢!

【问题讨论】:

【参考方案1】:

你的 for 循环让我很困惑。我不确定你想做什么。

让我们从您的示例中获取第一行:

"Shutdown Date/Time","Restart Date/Time"
2010-01-08 23:41:00,2010-01-13 09:17:00

您希望该行的结果为4 days 09:36:00 吗?这就是我理解你的问题的方式。在这种情况下,请尝试以下操作:

>>> oilShutdownTime['Restart Date/Time'] - oilShutdownTime['Shutdown Date/Time']

0   4 days 09:36:00
1   0 days 01:00:00
2   0 days 00:00:40
3   0 days 12:10:00
4   1 days 10:03:15
dtype: timedelta64[ns]

注意:只有第一行是真实数据,我没有输入您图片中的所有日期..

此时可能不需要循环。 Pandas 可以在内部以比您自己使用 for 循环更有效的方式处理按列计算。

【讨论】:

以上是关于以日期时间格式查找两列数据之间的单个时间跨度,可能使用 for 循环的主要内容,如果未能解决你的问题,请参考以下文章

查找DataFrame中两列之间的时间差[重复]

什么是 django 查询来查找搜索日期在两列之间的记录不是?

查找以 m/d/Y 格式存储的两个日期之间的天数 [重复]

在两列上创建索引以检查日期是不是介于这两个列之间

计算 2 个时间跨度 DSP 之间的差异

ActionScript 3.0 + 计算两个日期之间的时间跨度?