GPS坐标下的Dict操作

2024-09-26 21:59:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的数据,有两个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。但是当我必须同时考虑Ids和Gps坐标时,我不能将其包含在下面给出的代码中。我需要找到那些gps坐标相同的ID的频率。你知道吗

例如:列[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相关的数据都被注释时,这个错误就看不到了。是他们所有人的简单方式。提前谢谢。你知道吗


Tags: inforoutputasnplineopengps
1条回答
网友
1楼 · 发布于 2024-09-26 21:59:34

在第19行:

freqgps = len(pairgpslist[pairgps]

缺少len函数的结束参数。你知道吗

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

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')

相关问题 更多 >

    热门问题