需要更有效的将日期时间转换为/转换为熊猫

早上好Stackoverflow。

我正在尝试找到一种更好的方式来吸收CSV文件并解析日期时间。不幸的是,我的数据以'%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_datetime解析时没有%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>",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",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命令)。有什么想法吗?有建议吗?

谢谢!

rongxiaoxiao 回答:需要更有效的将日期时间转换为/转换为熊猫

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3080702.html

大家都在问