2013-02-03 104 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過濾器只用於處理文件中最終的空行,如果你的文件不包含任何文件,你可以忽略它。)