如何在Python中将文件加载为日期和时间作为DateTime对象



需要将此文件加载到第一个col中的日期,而第二col中的 HH:MM则需要加载该文件。

它如何与 numpy.genfromtxt() 一起使用?也许熊猫?

我的文件看起来像:

2017-Feb-11 00:00  m    4.87809   1.86737   5.04236   0.27627   1.5995 
2017-Feb-11 00:05  m    4.86722   1.86711   5.00023   0.27616   1.5965 
2017-Feb-11 00:10  m    4.85641   1.86690   4.95810   0.27604   1.5941 
In [32]: df = pd.read_csv(filename, delim_whitespace=True, parse_dates=[0], header=None)
In [33]: df[1] = pd.to_timedelta(df[1] + ':00')
In [34]: df
Out[34]:
           0        1  2        3        4        5        6       7
0 2017-02-11 00:00:00  m  4.87809  1.86737  5.04236  0.27627  1.5995
1 2017-02-11 00:05:00  m  4.86722  1.86711  5.00023  0.27616  1.5965
2 2017-02-11 00:10:00  m  4.85641  1.86690  4.95810  0.27604  1.5941
In [35]: df.dtypes
Out[35]:
0     datetime64[ns]
1    timedelta64[ns]
2             object
3            float64
4            float64
5            float64
6            float64
7            float64
dtype: object

ps,如果没有熊猫的日期组件,就不能拥有datetime dtype-这就是为什么我将其转换为timedelta dtype的原因。另外,您可以在单个datetime列中组合前两个列:

In [29]: df['date'] = pd.to_datetime(df.pop(0) + ' ' + df.pop(1) + ':00')
In [30]: df
Out[30]:
   2        3        4        5        6       7                date
0  m  4.87809  1.86737  5.04236  0.27627  1.5995 2017-02-11 00:00:00
1  m  4.86722  1.86711  5.00023  0.27616  1.5965 2017-02-11 00:05:00
2  m  4.85641  1.86690  4.95810  0.27604  1.5941 2017-02-11 00:10:00
In [31]: df.dtypes
Out[31]:
2               object
3              float64
4              float64
5              float64
6              float64
7              float64
date    datetime64[ns]
dtype: object

import pandas?不,更好地使用numpy.genfromtxt()工具:

好吧,为了这种转换而加载完整的重量级包装,但很尴尬。

您的另一个问题已经开始检查numpy.genfromtxt()权力,请继续行走:

converters  = { 0: lambda aSTR: datetime.datetime.strptime( aSTR, "%Y-%b-%d" ),
                #  WARNING:                                            ^
                #                                                      |
                #  above presented conversion specifier is locale-dependent
                #                                       so revise code if used
                #                                       in other locale domains
                1: lambda aSTR: getTimeDelta( aSTR ),
                }

最后,使用 .datetime .timedelta aritmetics的常见实践。

加载一个完整的 pandas 仅用于添加datetime值的两列,但是有点[TIME] -DOMAIN和[SPACE]- domain-domain edmkill,不是吗?

:O(

最新更新