列出R或Python中具有相同值的CSV单元格?

时间:2012-12-10 19:09:35

标签: python r excel

我有一张包含代理机构名称和地址的CSV。如果我想要一组具有相同地址的代理商名称(特别是相同的邮政编码),我该如何在R或Python中执行此操作?无论哪种方式最有效率都是可取的,但我仍然在学习这两种方法。 Google Refine已经为我提供了每个邮政编码群集的计数,但我只需要知道哪些代理商与这些拉链相对应。

PS。是的我知道邮政编码不好依靠;这一点就是为了说明这一点。

示例输入数据:

enter image description here

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

enter image description here

2 个答案:

答案 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 = ","))

您的数据的屏幕截图通常不是最有用的东西。一个完整的,可重复性最小的示例将允许更直接有用的更完整答案。 (并且导致您的后续问题减少。)