我有两个CSV文件,带有str
格式的时间戳数据。
第一个CSV_1将一个时间序列中的数据重采样为15分钟的块,如下所示:
time ave_speed
1/13/15 4:30 34.12318398
1/13/15 4:45 0.83396195
1/13/15 5:00 1.466816057
CSVè2具有来自gps点的固定时间,例如
id time lat lng
513620 1/13/15 4:31 -8.15949 118.26005
513667 1/13/15 4:36 -8.15215 118.25847
513668 1/13/15 5:01 -8.15211 118.25847
我正在尝试遍历这两个文件,以查找在CSV\u2中的时间在CSV\u1中的15分钟时间组中的实例,然后执行一些操作。在这种情况下,将ave\ u speed附加到该条件为真的每个条目上。你知道吗
使用上述示例的预期结果:
id time lat lng ave_speed
513620 1/13/15 4:31 -8.15949 118.26005 0.83396195
513667 1/13/15 4:36 -8.15215 118.25847 0.83396195
513668 1/13/15 5:01 -8.15211 118.25847 something else
我试着只在熊猫数据帧中做,但遇到了一些麻烦,我想这可能是一个解决办法,以实现我所追求的。你知道吗
这是我到目前为止写的代码,我觉得它很接近,但我似乎无法确定逻辑,让我的for循环返回15分钟时间组内的条目。你知道吗
with open('path/CSV_2.csv', mode="rU") as infile:
with open('path/CSV_1.csv', mode="rU") as newinfile:
reader = csv.reader(infile)
nreader = csv.reader(newinfile)
next(nreader, None) # skip the headers
next(reader, None) # skip the headers
for row in nreader:
for dfrow in reader:
if (datetime.datetime.strptime(dfrow[2],'%Y-%m-%d %H:%M:%S') < datetime.datetime.strptime(row[0],'%Y-%m-%d %H:%M:%S') and
datetime.datetime.strptime(dfrow[2],'%Y-%m-%d %H:%M:%S') > datetime.datetime.strptime(row[0],'%Y-%m-%d %H:%M:%S') - datetime.timedelta(minutes=15)):
print dfrow[2]
链接到我用同样的问题发布的熊猫问题Pandas, check if timestamp value exists in resampled 30 min time bin of datetimeindex
编辑:
创建两个时间列表,即listOne
和listTwo
包含CSV\u1中的所有时间和listTwo
包含CSV\u2中的所有时间,我可以在时间组中找到实例。所以使用CSV值有点奇怪。任何帮助都将不胜感激。你知道吗
如果有人对如何做同样的事情感到好奇,我觉得这很接近我想要的。它的效率不高,而且由于双循环,当前的脚本需要大约1天的时间对所有行进行多次迭代。你知道吗
如果有人有任何想法如何使这更容易或更快,我会非常感兴趣。你知道吗
相关问题 更多 >
编程相关推荐