2013-02-03 75 views
1

连接两列我有这样一个文本数据:
16/12/2006;17:24:00;1.000;17.000
与第一栏是日期和第二个是时间和休息只是一些浮动。现在我喜欢读文件:阅读文件和在numpy的阵列

np.genfromtxt(path, 
       dtype=(np.datetime64, np.datetime64, np.float16, np.float16), 
       delimiter=';', 
       converters = {0: lambda x: datetime.datetime.strptime(x, "%d/%m/%Y"), 
          1: lambda x: datetime.datetime.strptime(x, "%H:%M:%S")}) 

这会导致出现了第二列的默认日期设置为一月1,1900非常基本的问题。在阅读文件或阅读文件后,是否有某种方法可以将前两列的日期和时间合并起来。

+3

除非你已经熟悉这种方法,否则我会推荐使用'pandas'代替。 'pd.read_csv(“twodate.csv”,header = None,sep =“;”,parse_dates = [[0,1]])Just Works(tm)。 – DSM

+0

@DSM这让我很好奇Panda用于Python统计计算的当前状态。我认为scipy和numpy应该具有广泛的灵活性来处理这种情况。 – mrig

回答

2

您可以使用纯Python命令阅读它并自己创建连接字段。然后,如果需要的话,你可以在它运行转换器:

from datetime import datetime 

fp = open("test.dat", "r") 
lines = [ line.split(";") for line in fp.readlines() ] 
fp.close() 
fulldates = [ " ".join(line[0:2]) for line in lines if len(line) > 1 ] 
converted = [ datetime.strptime(date, "%d/%m/%Y %H:%M:%S") 
       for date in fulldates ] 

名单fulldates将包含加入数据+时间字段列表。列表converted将包含初始化的日期时间对象。 (我添加了if len(line) > 1过滤器只用于处理文件中最终的空行,如果你的文件不包含任何文件,你可以忽略它。)