我有一张包含代理机构名称和地址的CSV。如果我想要一组具有相同地址的代理商名称(特别是相同的邮政编码),我该如何在R或Python中执行此操作?无论哪种方式最有效率都是可取的,但我仍然在学习这两种方法。 Google Refine已经为我提供了每个邮政编码群集的计数,但我只需要知道哪些代理商与这些拉链相对应。
PS。是的我知道邮政编码不好依靠;这一点就是为了说明这一点。
示例输入数据:
最终输出(稍后将与shapefile合并):
答案 0 :(得分: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
包含邮政编码与代理商的映射。
答案 1 :(得分: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 = ","))
您的数据的屏幕截图通常不是最有用的东西。一个完整的,可重复性最小的示例将允许更直接有用的更完整答案。 (并且导致您的后续问题减少。)