我有一个熊猫数据框,其中的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/

10-12 17:31