我正在阅读文本文件,将数据转换为pandas DataFrame,然后尝试将两列(hhmmss)中的时间转换为时间格式,以便我可以减去列(开始时间hhmmss < / strong>)来自(结束时间hhmmss )并将其存储在另一列“delta”中。我无法将hhmmss转换为hh:mm:ss格式,以便我可以使用减法运算。
我尝试了很多组合,例如下面的一个组合,但无法让任何组合工作
df = pd.read_table('sample.txt', sep= '\t')
FMT = '%H%M%S'
df['Start time hhmmss'] = datetime.strptime(df['Start time hhmmss'], FMT)
我可以得到一些帮助吗?
这里建议的是两栏的负责人:
enter code here
df['Start time hhmmss'] .head()
Out[28]:
0 123045
1 134500
2 102367
3 90823
4 134523
Name: Start time hhmmss, dtype: int64
enter code here
df['End time hhmmss'] .head()
Out[29]:
0 234567
1 153436
2 134523
3 104512
4 162345
Name: End time hhmmss, dtype: int64
答案 0 :(得分:0)
显然数据有一些固有的问题,因为它与小时,分钟,秒不对应:
import pandas as pd
df = pd.DataFrame({
'a': ['123045', '134500', '102367']})
pd.to_datetime(df.a.astype(str), format='%h%M%S')
给出错误
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-5-b4af62ff61ff> in <module>()
----> 1 pd.to_datetime(df.a.astype(str), format='%H%M%S')
/home/amit/.local/lib/python2.7/site-packages/pandas/tseries/tools.pyc in to_datetime(arg, errors, dayfirst, utc, box, format, exact, coerce, unit, infer_datetime_format)
335 return arg
336 elif isinstance(arg, Series):
--> 337 values = _convert_listlike(arg.values, False, format)
338 return Series(values, index=arg.index, name=arg.name)
339 elif com.is_list_like(arg):
/home/amit/.local/lib/python2.7/site-packages/pandas/tseries/tools.pyc in _convert_listlike(arg, box, format)
328 return DatetimeIndex._simple_new(values, None, tz=tz)
329 except (ValueError, TypeError):
--> 330 raise e
331
332 if arg is None:
ValueError: unconverted data remains: 7
不幸的是,这很有意义,不是吗?如何以这种格式解释102367
?