首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将csv转换为多维数组

将csv转换为多维数组
EN

Stack Overflow用户
提问于 2014-03-27 17:34:39
回答 1查看 60关注 0票数 0

我有一个包含如下数据的csv:

代码语言:javascript
复制
"Store","Dept","Year","Week","Sales"
10,21,2,11,10908
11,30,2,12,12279
11,33,2,13,11061
12,81,2,14,12288
32,70,2,15,9950

并希望获得一个多维数组,这样我就可以轻松地调用:

代码语言:javascript
复制
Sales[store, dept, year, week]

例如,Sales[10,21,2,11] = 10908

任何语言都可以。最好是Python、Matlab或R。

不知何故,我找不到解决办法。我一直在努力让它在R中工作,到目前为止还没有成功(refer)。因为我不关心语言,所以我在更广泛的意义上开始这个问题。

EN

回答 1

Stack Overflow用户

发布于 2014-03-28 00:39:42

如果我没理解错的话,这就是你想要的-- python版本。这不是最好的编码,但基本思想是add函数递归地填充字典

代码语言:javascript
复制
import csv


def add(h, *args):
    """
    >>> add({},1,2,4,8)
    {1: {2: {4: 8}}}
    """
    if len(args) == 2:
        h[args[0]] = args[1]
        return h
    if not(args[0] in h.keys()):
        h[args[0]] = {}
    add(h[args[0]], *args[1:])
    return h


if __name__ == "__main__":
    hoh = {}
    with open('data.csv', 'rb') as csvfile:
        spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')
        headers = spamreader.next()
        for row in spamreader:
            print ', '.join(row)
            add(hoh, *row)
    import pprint
    pprint.pprint(hoh)

ps。我之所以使用h和hoh作为变量名,是因为我认为它们是“hoh”,这就是这种类型的关联数组在perl和awk中的名称。真对不起。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22683393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档