需要将此文件加载到第一个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(