Python 利用GPS坐标进行Dict操作

Python 利用GPS坐标进行Dict操作,python,dictionary,gps,Python,Dictionary,Gps,我有一个巨大的数据,有两个ID,开始和结束时间和gps坐标。我试图找到频率、总和、平均值、中值、最大值、最小值、接触持续时间以及基于GPS坐标的频率 004096f41eb8 00904bf131ad 40.0 820219 438869 820219 438869 004096f41eb8 00904bf469bd 40.0 820219 438869 820219 438869 00022d56dffe 00022dcbe817 962.0 820353 439280 820353 4392

我有一个巨大的数据,有两个ID,开始和结束时间和gps坐标。我试图找到频率、总和、平均值、中值、最大值、最小值、接触持续时间以及基于GPS坐标的频率

004096f41eb8 00904bf131ad 40.0 820219 438869 820219 438869
004096f41eb8 00904bf469bd 40.0 820219 438869 820219 438869
00022d56dffe 00022dcbe817 962.0 820353 439280 820353 439280
00022dcbe817 00306511e9e0 540.0 820353 439280 820353 439280
00022dcbe817 00904b21787a 4250.0 820353 439280 820353 439280
00022dcbe817 00904b3b845a 1117.0 820353 439280 820353 439280
00022dcbe817 00904bc3be80 1117.0 820353 439280 820353 439280
00022dcbe817 00904bcd5f00 4250.0 820353 439280 820353 439280
00022dcbe817 00904bfebc7c 3737.0 820353 439280 820353 439280
以上是输入示例
col[0]
col[1]
是ID。我可以很好地找到频率、总和、平均值、中值、最大值、最小值、联系持续时间。但是当我必须同时考虑IDS和GPS坐标时,我不能把它包含在下面给出的相同代码中。我需要找到具有相同gps坐标的ID的频率

004096f41eb8 00904bf131ad 40.0 820219 438869 820219 438869
004096f41eb8 00904bf469bd 40.0 820219 438869 820219 438869
00022d56dffe 00022dcbe817 962.0 820353 439280 820353 439280
00022dcbe817 00306511e9e0 540.0 820353 439280 820353 439280
00022dcbe817 00904b21787a 4250.0 820353 439280 820353 439280
00022dcbe817 00904b3b845a 1117.0 820353 439280 820353 439280
00022dcbe817 00904bc3be80 1117.0 820353 439280 820353 439280
00022dcbe817 00904bcd5f00 4250.0 820353 439280 820353 439280
00022dcbe817 00904bfebc7c 3737.0 820353 439280 820353 439280
例如:列[0]列[1]列[3]列[4]列[5]列[6]

from collections import defaultdict
import numpy as np

pairtimelist = defaultdict(list)
pairgpslist = defaultdict(list)

with open('input', 'r') as f, open('output_all', 'w') as o_one, open('output_contact', 'w') as o_two, open('output_gps', 'w') as o_three:
    for numline, line in enumerate((line.split() for line in f), start=1):
        pair = line[0], line[1]
        pairtimelist[pair].append(float(line[2]))
        pairgps = line[0], line[1], line[3], line[4], line[5], line[6]
        #pairgpslist[pairgps].append(float(line[2])) 
    for pair in pairtimelist.iterkeys():
        timeavg = np.mean(pairtimelist[pair])
        timemed = np.median(pairtimelist[pair])
        timesum = np.sum(pairtimelist[pair])
        timemax = np.max(pairtimelist[pair])
        timemin = np.min(pairtimelist[pair])
        freq = len(pairtimelist[pair])
    for pairgps in pairgpslist.iterkeys():
        freqgps = len(pairgpslist[pairgps]
    #print pair, pairtimelist[pair]
    o_two.write("%s %s \n" % (pair, pairtimelist[pair]))
    o_one.write("%s %s %s %.2f %.2f %s %s %s \n" % (pair[0], pair[1], freq, timesum, timeavg, timemed, timemax, timemin))
    o_three.write("%s %s \n" % (pair, freqgps))

Error: 
 File "pair_gps.py", line 21
    o_two.write("%s %s \n" % (pair, pairtimelist[pair]))
        ^
SyntaxError: invalid syntax
但当所有与gps相关的文件都被注释时,就看不到这个错误了。是他们任何简单的方式都有在一起。提前谢谢

在您的第19行:

freqgps = len(pairgpslist[pairgps]
您缺少
len
功能的结束参数

顺便说一句,你可以很容易地实现你想做的事情,并且使用pandas以一种不太容易出错的方式实现。可能是这样的:

import pandas as pd
import numpy as np

pd.read_csv('input.csv')\
  .groupby([0, 1])[2]\
  .agg([np.mean, np.median, np.sum, np.max, np.min])\
  .reset_index()\
  .to_csv('output.csv')

如果有人对帮助不感兴趣,请不要回应。。但不要在“关闭”上打标记,这对您可能并不重要。。对于我来说,在这个问题上得到任何帮助都是非常重要的。。再次感谢。。我一定会尝试熊猫。