Skip to main content
 首页 » 编程设计

python之从 numpy loadtxt() 获取日期列

2025年05月04日21TianFang

我有一个包含下表的文本文件。

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)