对于提出一个已经不止一次得到全面解决的问题,我深表歉意。我的问题是,我试图复制粘贴,因为是这样的帖子,但没有为我工作的例子。我有“dd mm YYYY HH mm ss value value”格式的数据。我想把它读成pandas数据框,第一列是datestring。以下是我在SO posts上尝试的例子: 一。第一个样本数据
01 05 2013 00 00 00 26.4 16.5
02 05 2013 00 00 00 25.9 17.7
03 05 2013 00 00 00 26.6 17.4
......
HH-mm-ss的零被加上只是为了与示例完全一致。
其次是进口的包装
从datetime导入datetime 导入熊猫作为pd 导入操作系统 从cStringIO导入StringIO
fname=os.path.expanduser('./temps0.txt')
我试过的三个例子
(一) 发帖人:
Parse dates when year month day and hour are in separate columns using pandas in python
def dt_parse(日期字符串): dt=pd.datetime.strptime(日期字符串,'%d%m%Y') 返回日期 df=pd.read_csv(fname,header=None,index_col='datetime', parse_dates={'datetime':[0,1,2,4,5,6]}, 日期分析器=lambda x:pd.datetime.strptime(x,'%d%m%Y')) 日期分析器=dt_pasre)
这是错误的一部分
File "/home/zmumba/anaconda/lib/python2.7/site-packages/pandas/io/parsers.py",
line 1763, in _try_convert_dates
colnames.append(str(columns[c]))
IndexError: list index out of range
(二) 又一次尝试,来自SO post:
https://stackoverflow.com/questions/11615504/parse-dates-when-yyyymmdd-and-hh-are-in-separate-columns-using-pandas-in-python
parse = lambda x: datetime.strptime(x, '%d%m%Y')
pd.read_table("./temps0.txt", parse_dates = [['DD MM YYYY HH mm ss']],
index_col = 0,
date_parser=parse)
这是错误的一部分
File "/home/zmumba/anaconda/lib/python2.7/site-packages/pandas/io/parsers.py",
line 1009, in _set
self._reader.set_noconvert(names.index(x))
ValueError: 'DD MM YYYY HH mm ss' is not in list
(三) 又一次尝试,来自SO post:
https://stackoverflow.com/questions/17301589/parsing-dd-mm-yy-hh-mm-ss-columns-from-txt-file-using-pythons-pandas?lq=1
def date_parser(ss):
day, month, year, hour, min, sec = ss.split()
return pd.Timestamp('20%s-%s-%s %s:%s:%s' % (year, month, day, hour, min, sec))
df = pd.read_csv('temps0.txt', header=None, sep='\s+\s', parse_dates=[[0]], date_parser=date_parser)
这是错误的一部分
File "<stdin>", line 2, in date_parser
ValueError: too many values to unpack
请原谅我的无知,因为我试图学习主要是通过这样的职位(官方文件完全缺乏明确的例子)。
在Chang's answer中,他使用了一个解析器,这是您需要调整以匹配日期字符串的日期格式的位:
您还需要调整列名,在该示例中,列名与格式类似,这有点混乱。这里没有列名,因此可以使用数字(表示列的位置,并告诉read_csv使用header=None):
注意:我们使用header=None,因为没有列名。
如果数据由多个空格(多于两个)而不是逗号分隔,则使用sep参数:
注意:io docs涉及很多细节,有很多例子。
相关问题 更多 >
编程相关推荐