我有一个熊猫数据框,其中的TEXT列称为Used,它包含通话的持续时间,以分钟为单位:秒。我想将其转换为持续时间格式。问题是某些分钟数大于59,因此出现错误:
time data '67:01' does not match format '%M:%S'
转换它的代码是:
df.Used.apply(lambda x: datetime.datetime.strptime(x, '%M:%S'))
有没有简单的方法可以将其转换为十进制分钟格式? 67:01就像67.01666一样?
最佳答案
根据datetime
对象的文档,您只能在[0-60)
范围内获得分钟值:
必须输入年,月和日。 tzinfo可以为None或tzinfo子类的实例。其余参数可以是int或long,范围为:
0 0 0 0
因此,没有摆脱该错误的可能方法。如果要将其转换为十进制分钟格式,我想这只是一个decimal
,则需要像下面这样手动进行:
# Split the string, join it and cast it to float
df.Used.apply(lambda x : float(".".join(x.split(":"))))
哪个输出:
In [5]: df = pd.DataFrame([['87:01'],['911:11']],columns=['Used'])
In [6]: df.Used.apply(lambda x : float(".".join(x.split(":"))))
Out[6]:
0 87.01
1 911.11
Name: Used, dtype: float64
关于python - ValueError:时间数据“67:01”与格式“%M:%S”不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32667006/