【发布时间】:2025-12-11 23:30:01
【问题描述】:
我有一个按如下方式组织的 CSV 文件
0 1 2 3 4 5 6 7 8 9 10 11
0 42 2012 106 1200 -0.325 0.576 -0.295 31.73 14.80 1096 99.3 55
1 42 2012 106 1200 -0.372 0.499 -0.236 31.74 14.80 1097 99.3 56
2 42 2012 106 1200 -0.372 0.456 -0.212 31.74 14.80 1096 99.3 57
3 42 2012 106 1200 -0.312 0.736 -0.095 31.70 14.81 1097 99.3 58
4 42 2012 106 1200 -0.352 0.707 -0.035 31.66 14.78 1094 99.3 59
5 42 2012 106 1200 -0.518 0.662 -0.152 31.66 14.79 1094 99.3 60
6 42 2012 106 1200 -0.516 0.531 -0.249 31.78 14.79 1094 99.3 61
第 1、2 和 3 列分别是年份、儒略日和 %hour%minute。我正在尝试将这些列解析为日期时间索引,但我似乎做不到。
我尝试了一些东西,最有希望的是来自this answer,所以我写了(假设fname是文件的路径)
dateparse= lambda x: datetime.datetime.strptime(x, '%Y %j %H%M')
pd.read_csv(fname, header=None, parse_dates=[[1,2,3]], date_parser=dateparse)
但这给了我错误
TypeError: <lambda>() takes exactly 1 argument (3 given)
这表明熊猫显然没有像我预期的那样连接第 1,2 和 3 列然后应用解析器函数。如果我只用
阅读 csvpd.read_csv(fname, header=None, parse_dates=[[1,2,3]])
DATA=data.set_index('1_2_3')
然后我得到
0 4 5 6 7 8 9 10 11
1_2_3
2012 106 1200 42 -0.325 0.576 -0.295 31.73 14.80 1096 99.3 55
2012 106 1200 42 -0.372 0.499 -0.236 31.74 14.80 1097 99.3 56
2012 106 1200 42 -0.372 0.456 -0.212 31.74 14.80 1096 99.3 57
2012 106 1200 42 -0.312 0.736 -0.095 31.70 14.81 1097 99.3 58
2012 106 1200 42 -0.352 0.707 -0.035 31.66 14.78 1094 99.3 59
2012 106 1200 42 -0.518 0.662 -0.152 31.66 14.79 1094 99.3 60
2012 106 1200 42 -0.516 0.531 -0.249 31.78 14.79 1094 99.3 61
但索引不被视为日期,它是一个字符串:
DATA.index
Index([u'2012 106 1200', u'2012 106 1200', u'2012 106 1200', u'2012 106 1200', ...], dtype='object')
有什么想法吗?
【问题讨论】:
标签: python parsing csv datetime pandas