以日期时间格式查找两列数据之间的单个时间跨度,可能使用 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 循环的主要内容,如果未能解决你的问题,请参考以下文章