我有一个包含下表的文本文件。
Day Month Year Avg Power
01 01 2000 30
02 01 2000 41
04 01 2000 55
05 01 2000 78
06 01 2000 134
07 01 2000 42
我想将日、月和年列加载到单个日期时间值中。为此,请执行以下步骤。但代码无法按我的预期工作。
from numpy import loadtxt
import datetime
def date_converter(x,y,z):
date = "{},{},{}".format(x,y,z)
return datetime.datetime.strptime(date,r"%d,%m,%Y")
data3 = loadtxt('complex_data_file.txt',dtype=int, usecols=(0,1,2,4),
converters={(0,1,2):date_converter,3:int})
我必须做什么才能达到我的要求?
请您参考如下方法:
我将使用 Pandas 模块来完成此任务:
In [228]: df = pd.read_csv(fn, usecols=[0,1,2,4], parse_dates={'Date':[2,1,0]})
In [229]: df
Out[229]:
Date Avg Power
0 2000-01-01 30
1 2000-01-02 41
2 2000-01-04 55
3 2000-01-05 78
4 2000-01-06 134
5 2000-01-07 42
In [230]: df.dtypes
Out[230]:
Date datetime64[ns]
Avg Power int64
dtype: object
将其转换为 Numpy 数组也非常容易:
In [231]: df.values
Out[231]:
array([[Timestamp('2000-01-01 00:00:00'), 30],
[Timestamp('2000-01-02 00:00:00'), 41],
[Timestamp('2000-01-04 00:00:00'), 55],
[Timestamp('2000-01-05 00:00:00'), 78],
[Timestamp('2000-01-06 00:00:00'), 134],
[Timestamp('2000-01-07 00:00:00'), 42]], dtype=object)
