【发布时间】:2016-03-01 18:53:35
【问题描述】:
我正在尝试读取许多文件。每个文件是一个每日数据文件,每 10 分钟有一次数据。每个文件中的数据有点像这样“分块”:
2015-11-08 00:10:00 00:10:00
# z speed dir W sigW bck error
30 3.32 111.9 0.15 0.12 1.50E+05 0
40 3.85 108.2 0.07 0.14 7.75E+04 0
50 4.20 107.9 0.06 0.15 4.73E+04 0
60 4.16 108.5 0.03 0.19 2.73E+04 0
70 4.06 93.6 0.03 0.23 9.07E+04 0
80 4.06 93.8 0.07 0.28 1.36E+05 0
2015-11-08 00:20:00 00:10:00
# z speed dir W sigW bck error
30 3.79 120.9 0.15 0.11 7.79E+05 0
40 4.36 115.6 0.04 0.13 2.42E+05 0
50 4.71 113.6 0.07 0.14 6.84E+04 0
60 5.00 113.3 0.13 0.17 1.16E+04 0
70 4.29 94.2 0.22 0.20 1.38E+05 0
80 4.54 94.1 0.11 0.25 1.76E+05 0
2015-11-08 00:30:00 00:10:00
# z speed dir W sigW bck error
30 3.86 113.6 0.13 0.10 2.68E+05 0
40 4.34 116.1 0.09 0.11 1.41E+05 0
50 5.02 112.8 0.04 0.12 7.28E+04 0
60 5.36 110.5 0.01 0.14 5.81E+04 0
70 4.67 95.4 0.14 0.16 7.69E+04 0
80 4.56 95.0 0.15 0.21 9.84E+04 0
...
文件每 10 分钟就这样持续一整天。此文件的文件名为 151108.mnd。我希望我的代码读取所有 11 月的文件,所以 1511??.mnd 并且我希望我的代码在整个月的每一天文件中读取所有日期时间行,因此对于我刚刚展示的部分数据文件示例我希望我的代码将 2015-11-08 00:10:00、2015-11-08 00:20:00、2015-11-08 00:30:00 等存储为变量,然后转到次日文件 (151109.mnd) 并获取所有日期时间行并存储为日期变量并附加到先前存储的日期。整个月以此类推。这是我到目前为止的代码:
import pandas as pd
import glob
import datetime
filename = glob.glob('1511??.mnd')
data_nov15_hereford = pd.DataFrame()
frames = []
dates = []
counter = 1
for i in filename:
f_nov15_hereford = pd.read_csv(i, skiprows = 32)
for line in f_nov15_hereford:
if line.startswith("20"):
print line
date_object = datetime.datetime.strptime(line[:-6], '%Y-%m-%d %H:%M:%S %f')
dates.append(date_object)
counter = 0
else:
counter += 1
frames.append(f_nov15_hereford)
data_nov15_hereford = pd.concat(frames,ignore_index=True)
data_nov15_hereford = data_nov15_hereford.convert_objects(convert_numeric=True)
print dates
这段代码有一些问题,因为当我打印日期时,它会打印出每个日期的两个副本,而且它也只打印出每个文件的第一个日期,所以 2015-11-08 00:10:00, 2015-11-09 00:10:00 等。它不会在每个文件中逐行运行,然后一旦存储该文件中的所有日期,就可以像我想要的那样移动到下一个文件。相反,它只是抓取每个文件中的第一个日期。对此代码有任何帮助吗?有没有更简单的方法来做我想做的事?谢谢!
【问题讨论】:
标签: python file datetime pandas