我有一個CSV代理機構名稱和地址。如果我想要一組具有相同地址的代理機構名稱(特別是相同的郵政編碼),那麼我如何在R或Python中執行此操作?無論哪種方式最有效率都是可取的,但我仍然在學習。 Google Refine已經爲我提供了每個郵政編碼羣的統計信息,但我只需要知道哪些代理機構與這些郵政編碼相對應。在R或Python中列出具有相同值的CSV單元格?
PS。是的,我知道郵政編碼是不好的依靠;這一點就是爲了說明這一點。
實施例的輸入數據:
最終輸出(與shape文件進行合併):
我有一個CSV代理機構名稱和地址。如果我想要一組具有相同地址的代理機構名稱(特別是相同的郵政編碼),那麼我如何在R或Python中執行此操作?無論哪種方式最有效率都是可取的,但我仍然在學習。 Google Refine已經爲我提供了每個郵政編碼羣的統計信息,但我只需要知道哪些代理機構與這些郵政編碼相對應。在R或Python中列出具有相同值的CSV單元格?
PS。是的,我知道郵政編碼是不好的依靠;這一點就是爲了說明這一點。
實施例的輸入數據:
最終輸出(與shape文件進行合併):
您應該能夠只是構建字典:
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
包含郵政編碼到機構的映射。
下面是一個使用模擬數據的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 = ","))
數據的屏幕截圖通常不表現出最有用的東西。一個完整的,最小可重現的例子將允許更直接有用的更完整的答案。 (並且導致您的後續問題減少。)
@grich joran對最小可重複性示例的評論非常重要。它大大增加了解決實際問題的完整答案的機會。 –
@grich:這是'csv'的問題。我從來沒有見過它,所以這裏有[噸Google結果](https://www.google.com/search?q=Error:+new-line+character+seen+in+unquoted+field+-+對於那個確切的問題,你需要+ + + +打開+ +文件+ + +通用 - 換行+模式&#= 100&hl = en&safe = off&tbo = u&tbm = dsc&sa = X&ei = JTzGULSADcKCyAGi2IHgAw&ved = 0CEUQmAcwAQ&ved = 0CEUQmAcwAQ&bi = 1440&bih = 799)。 – Blender
明白了。謝謝! – geraldarthur
如何將列表寫入單個單元格?編寫者只是想將列表中的每個項目分隔成不同的單元格。 – geraldarthur