我有一个这样的CSV文件:

Header1,Header2,Header3,Header4
AA,12,ABCS,A1
BDDV,34,ABCS,BB2
ABCS,5666,gf,KK0

列只能包含字母/单词,或只包含数字或两者。 我有这样的多个文件,每个列中的列不一定相同。 我想得到列中只有字母而没有数字的每个元素的计数。

我想要的输出是

Header1- [('AA', 1),('BDDV',1),('ABCS',1)] Header3- [('ABCS', 2),('gf', 1)]

这里,尽管两列都有'ABCS',但我想为每列分别计算它们。

我可以通过硬编码列号来获得计数,如下所示:

import csv
import collections

count_number = collections.Counter()
with open('filename.csv') as input_file:
    r = csv.reader(input_file, delimiter=',')
    headers = next(r)
    for row in r:
        count_number[row[1]] += 1

print count_number.most_common()

但我对如何对列进行操作感到困惑。

#1楼 票数:1 已采纳

这可以使用每个标头的Counter

#!/usr/bin/env python
from collections import Counter, defaultdict
import csv

header_counter = defaultdict(Counter)

with open('filename.csv') as input_file:
    r = csv.reader(input_file, delimiter=',')
    # read headers
    headers = next(r)
    for row in r:
        # count values for each row to add in header context
        row_val = sum([w.isdigit() for w in row])
        # zip each row with headers to know where to count
        for header, val in zip(headers, row):
            # count only non-digits
            if not any(map(str.isdigit, val)):
                header_counter[header].update({val: row_val})

for k, v in header_counter.iteritems():
    print k, v

输出:

Header3 Counter({'ABCS': 2, 'gf': 1})
Header1 Counter({'AA': 1, 'BDDV': 1, 'ABCS': 1})

#2楼 票数:1

仅部分解决方案(您仍需要在CSV读取器的第二次迭代中过滤带有数字的列)。

import csv
import collections

with open('filename.csv') as input_file:
  r = csv.reader(input_file, delimiter=',')
  headers = next(r)
  count_number = [collections.Counter() for I in Len(headers)]

  for row in r:
    for i, val in enumerate(row):
      count_number[i][val] += 1

print [cr.most_common() for cr in count_number]

  ask by abn translate from so

未解决问题?本站智能推荐:

2回复

CSV文件的Python计数器

我是Python的新手,我需要一些帮助才能获得调查结果。 我有一个CSV文件,看起来像这样: 我想计算每个人和性别出现不同答案的次数。 例如,Q1 :(教授,男:同意,2),(教授,女:同意1;中性1),依此类推。 到目前为止,我已经尝试过了: 但是我认为因为只有字符串,所以没有任
1回复

Python创建新列并将数据存储在.CSV文件中

我已经在Python脚本中堆叠了一些文件,尝试打开.txt文件,从该文件中列出单词,计算单词出现的次数(计数器),然后将其放入.csv文件中。 我的文件的名称来自1870.txt-1892(1871,1872,1873..1892.txt)。 那里的所有内容都可以正常工作,但是我希望将每个文
1回复

创建具有两列的csv文件|计数器模式

我编写了一个代码,用于计算给定文本文档中单词的出现次数,现在我想将输出保存在具有两列的csv文件中:一列用于单词,一列用于它们的频率。 这是我要复制的代码: 但是,这是输出: 我尝试获取的输出应仅包含两列(一列代表“单词”,一列代表“ frequency”,每一行应包含一个单词及其在
4回复

Python:将计数器写入csv文件

我有一个csv数据文件,其中包含'number' , 'colour' , 'number2' , 'foo' , 'bar' ,如下所示: 我想计算数字,颜色和数字2一起出现的次数,例如,上面列表的输出将是: '12, red, 124 :2','14, blue, 353: 1', '1
1回复

计算.csv列的各个部分中的唯一元素(Python)

我有一个.csv文件,其中包含地质构造和每个构造中的化石物种。 每个化石在.csv文件中都有其自己的行,并且该行中包括地名。 我在下面编写的代码可以很好地打印出编队出现的次数。 但是,可能有重复的化石名称会破坏计数。 我只想要每个地层的独特化石数量。 我可以添加些什么以计算.csv
1回复

将Python计数器导出到.CSV文件

我有打开和读取文本文件的脚本,分隔每个单词并列出这些单词。 我让Counter对列表中的每个单词计数了多少次。 然后,我想在.csv文件中导出每一行,如下所示: 单词你好出现10次 字屋出现5次 单词树出现3次 ...等等 您能告诉我在这里需要什么更改才能使脚本起作用吗?
1回复

在Python错误中将计数器打印到csv文件

我似乎在将计数器打印到csv文件时遇到问题。 我已尝试遵循以下线程Python:将Counter写入csv文件 , 如何按顺序向文件写入计数器? 和Python:将字典写入csv文件,每个'key:value'一行 ,但似乎我一直在陷入困境。 我的计数器格式如下: 计数器更大,但这给
1回复

CSV文件中单元格中字母的位置频率计数

我一直在尝试使用PHP / Python找出最有效的方法来解析已通过Web表单上传到CSV文件的内容。 简而言之,它包含一系列已按字母分割的字符串,其中第一个整数表示该特定字符串的出现次数。 例如: 我试图弄清楚如何返回每个字母的出现次数,并考虑到其位置(第一个,最后一个或中间的任何地