按字段值从CSV文件组合数据 [英] Group data from a CSV file by field value

查看:132
本文介绍了按字段值从CSV文件组合数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个csv文件,在第一列有重复的值。我想在列表中为第一列的一个值收集第二列的所有值

  column1 column2 
a 54.2
s 78.5
k 89.62
a 77.2
a 65.56

得到像

  print a#[54.2,77.2,65.56] 
print s#[78.5]
print k#[89.62]


解决方案

使用python的 CSV阅读器



data.csv



  a,54.2 
s,78.5
k ,89.62
a,77.2
a,65.56

script.py

  import csv 

result = {}

open('data.csv','rb')as csvfile:
csvreader = csv.reader(csvfile,delimiter =',',quotechar ='')
for csvreader:
if result [0] in result:
result [row [0]] append(row [1])$ ​​b $ b else:
result [row [0]] = [row [ 1]]

打印结果

  {
'a':['54 .2','77 .2','65 .56'],
'':['78 .5'],
'k':['89 .62']
}






随着@Pete的出现,你可以使用 defaultdict



script.py



> import csv
从集合import defaultdict

result = defaultdict(list)#dict的每个条目,默认情况下,一个空列表

with open('data.csv','rb')as csvfile:
csvreader = csv.reader(csvfile,delimiter =',',quotechar = ''')
for csvreader:
result [row [0]]。append(row [1])$ ​​b
$ b打印结果


I have a csv file which has duplicate value in first column . I want to collect all value of second column in a list for one value of first column

column1 column2
a        54.2
s        78.5
k        89.62
a        77.2
a        65.56

I want to get like

print a  # [54.2,77.2,65.56]
print s  # [78.5]
print k  # [89.62]

解决方案

It seems fairly straightforward using python's CSV reader.

data.csv

a,54.2
s,78.5
k,89.62
a,77.2
a,65.56

script.py

import csv

result = {}

with open('data.csv', 'rb') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=',', quotechar='"')
    for row in csvreader:
        if row[0] in result:
            result[row[0]].append(row[1])
        else:
            result[row[0]] = [row[1]]

print result

output

{
    'a': ['54.2', '77.2', '65.56'], 
    's': ['78.5'], 
    'k': ['89.62']
}


As @Pete poined out, you can beautify it using defaultdict:

script.py

import csv
from collections import defaultdict

result = defaultdict(list)  # each entry of the dict is, by default, an empty list

with open('data.csv', 'rb') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=',', quotechar='"')
    for row in csvreader:
        result[row[0]].append(row[1])

print result

这篇关于按字段值从CSV文件组合数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆