0

我有一个包含机构名称和地址的 CSV。如果我想要一串具有相同地址(特别是相同的邮政编码)的机构名称,我该如何在 R 或 Python 中做到这一点?无论哪种方式最有效都是可取的,但我仍在学习这两种方式。Google Refine 已经给了我每个邮政编码集群的数量,但我只需要知道哪些机构对应于这些邮政编码。

PS。是的,我知道邮政编码不好依赖;这样做的目的是为了说明这一点。

示例输入数据:

在此处输入图像描述

最终输出(稍后与 shapefile 合并):

在此处输入图像描述

4

2 回答 2

5

您应该能够构建一个字典:

import csv

from collections import defaultdict

agencies = defaultdict(list)

with open('file.csv', 'r') as handle:
    reader = csv.reader(handle)

    for row in reader:
        agencies[row[2]].append(row[0])

现在,agencies包含邮政编码到机构的映射。

于 2012-12-10T19:13:29.240 回答
2

这是使用模拟数据的 R 解决方案的粗略草图:

set.seed(123)
dat <- data.frame(agency = sample(letters[1:15],100,replace = TRUE),
                  zipcode = sample(15,100,replace = TRUE))

head(dat)

#A base R solution
aggregate(dat$agency,
          by = list(dat$zipcode),
          FUN = function(x){paste(x,collapse = ",")})

#Or using the populat plyr package
library(plyr)
ddply(dat,
      .(zipcode),
      summarise,
      agencies = paste(agency,collapse = ","))

数据的屏幕截图通常不是最有用的展示方式。一个完整的、最小的可重复示例将允许更完整的答案,这些答案更直接有用。(并减少您提出的后续问题。)

于 2012-12-10T20:34:34.277 回答