【发布时间】:2015-07-10 16:30:02
【问题描述】:
我是 python 和编程的新手(所以请放轻松),希望有人能提供帮助。 我的自行车旅行持续时间为 dtype: object 持续时间 14 小时 26 分钟。 2秒。 0小时8分钟。 34 秒。 0 小时 12 分钟。 17 秒。
理想情况下,我希望创建一个新列,将计算出的分钟持续时间保存为整数。所以 h 需要 *60,并且需要四舍五入的秒数。所以我会: 持续时间 866 9 12
我在拆分和获得数字的第一个障碍时遇到了麻烦。 我很高兴与此分手:
def ConvertDuration(Minutes):
return Minutes.split(' ')[0].split('.')[1].strip()
WashBike['DurationMin'] = pd.DataFrame({'Duration':WashBike['Duration'].apply(ConvertDuration)})
我可以调整位置并为 h、min 和 sec 分别创建一列。
但是字符串字符将保留。我需要再做一次拆分以进一步分离和删除字符吗?
我还尝试使用以下内容去除字符:
WashBike['DurationInt'] = WashBike['Duration'].str.strip(' ').str.strip('.').str.strip('hHmMiInNsSeEcC')
我还没有达到将值放入单个数字分钟单位测量的阶段。我正在考虑做这样的事情:
WashBike['DurationMn'] = WashBike['Duration'].split(' ').apply(lambda x: int(x[0]) * 60 + int(x[1] + int(x[2].round()) ))
虽然我无法做到这一点。
我花了 2 天时间查看 stackoverflow 和其他内容。我发现了很多关于日期时间等的信息。虽然我试图将 Duration 转换为 hh:mm:ss,但我不确定它是否正确。任何帮助和建议将不胜感激。
肯
【问题讨论】:
-
第一个问题:我假设持续时间为 14 小时 26 分钟。 2秒。 0小时8分钟。 34 秒。 0 小时 12 分钟。 17 秒。是文本字段吗? “持续时间 14 小时 26 分钟。2 秒。0 小时 8 分钟。34 秒。0 小时 12 分钟。17 秒。”
-
嗨,亚历山大。是的,它是一个文本字段。很抱歉没有提到这一点
-
注意引号的位置。 Duration 是列的标题,每个时间值是一个元素吗?例如。 “14 小时 26 分 2 秒”、“0 小时 8 分 34 秒”、“0 小时 12 分 17 秒”。还是都是一长串?
-
嗨,Alexander,很抱歉没有尽快回复。是的,持续时间 = 每个时间值一个元素的标题。提供的 2 个答案给了我我正在寻找的东西。但是,如果您有/想要贡献,我很乐意接受建议。
标签: python numpy time pandas duration