需要更有效的日期时间转换

2024-10-04 03:22:18 发布

您现在位置:Python中文网/ 问答频道 /正文

早上好,谢谢。你知道吗

我正试图找到一个更好的方法,吸进一个CSV文件和解析datetime。很遗憾,我的数据以“%j:%H:%M:%S.%f”的形式传入,例如234:17:33:00.000206700。我有一年坐在另一个领域从我的标题我跳过,所以这是我的方法转换之前设置为索引,因为我有日期滚动帐户。它的工作,但比我想慢,是不是直观。你知道吗

dataframe = pd.read_csv(data_file,skiprows=np.arange(0,meta_lines),header=[0,1,2])

dataframe['Temp'] = meta['Date'].split('-')[2] + ' '  # splitting off the year from 08-22-2019
dataframe['Temp'] = dataframe[['Temp','AbsoluteTime']].apply(lambda x: ''.join(x),axis=1)
dataframe['AbsoluteTime'] = pd.to_datetime(dataframe['Temp'],format='%Y %j:%H:%M:%S.%f')
del dataframe['Temp']

dataframe.set_index('AbsoluteTime', inplace=True)

最初我想pd.to\ U日期时间解析时没有%Y,结果是1900年,并使用时间增量来添加X年,但是当我沿着这条路径开始时,遇到了这个错误。你知道吗

dataframe['AbsoluteTime']
Out[8]: 
       DDD:HH:MM:SS.sssssssss
                Absolute Time
0      234:17:33:00.000206700
1      234:17:33:00.011264914
2      234:17:33:00.015721314
...
pd.to_datetime(dateframe['AbsoluteTime'],format='%j:%H:%M:%S.%f')
Traceback (most recent call last):

  File "<ipython-input-9-6dfc074c2dc4>", line 1, in <module>
    pd.to_datetime(dateframe['AbsoluteTime'],format='%j:%H:%M:%S.%f')

NameError: name 'dateframe' is not defined


pd.to_datetime(dataframe['AbsoluteTime'],format='%j:%H:%M:%S.%f')
Traceback (most recent call last):

  File "<ipython-input-10-bfbf7ee22833>", line 1, in <module>
    pd.to_datetime(dataframe['AbsoluteTime'],format='%j:%H:%M:%S.%f')

  File "C:\Users\fkatzenb\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 512, in to_datetime
    result = _assemble_from_unit_mappings(arg, errors=errors)

  File "C:\Users\fkatzenb\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 582, in _assemble_from_unit_mappings
    unit = {k: f(k) for k in arg.keys()}

  File "C:\Users\fkatzenb\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 582, in <dictcomp>
    unit = {k: f(k) for k in arg.keys()}

  File "C:\Users\fkatzenb\AppData\Local\Continuum\Anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 577, in f
    if value.lower() in _unit_map:

AttributeError: 'tuple' object has no attribute 'lower'

有什么好处?我的问题并不是像其他线程那样使用双括号[[]]来处理这个错误地址。如果我这样做是为了测试,我知道。。。你知道吗

pd.to_datetime(['234:17:33:00.000206700'],format='%j:%H:%M:%S.%f')
Out[6]: DatetimeIndex(['1900-08-22 17:33:00.000206700'], dtype='datetime64[ns]', freq=None)

然后我想在上面加一个timedelta,把年份移到当前年份。你知道吗

我唯一的想法是,它与我的多列标题有关(请参阅我的from揕csv命令)。思想?建议?你知道吗

谢谢!你知道吗


Tags: toinfromformatdataframedatetimelineunit