繁体   English   中英

使用Python获取每个CSV列中的字符串计数

Get counts of strings in each CSV column using Python

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个这样的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()

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

2 个回复

这可以使用每个标头的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})

仅部分解决方案(您仍需要在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]
1 连接字符串中的 2 列,然后获取每个连接的计数

我试图连接 2 列,然后计算行数,即合并列字符串存在的总次数,但我不知道是否可能。 例如: 注意:我作为字符串的一部分插入的冒号,所以我的结果类似于 12:3。 然后,“计数”应该告诉我 column_1 = 12 和 column_2 = 3 处存在的行数。 显然,它告诉我 'merged_ ...

2016-03-13 17:42:30 2 10560   mysql
2 Python使用XLSX数据获取列中字符串实例的计数

每个文件中有两个数据项的高级场景 我有一个用历史数据编写的 CSV 文件 我有一个 xlsx 文件,它是当前状态的快照 我想要做的是浏览 xlsx 文件并通过阅读 csv 链接列添加出现次数,并在下面给出最终结果的计数示例。 这在 python 中似乎很难做到,只是不明白为什么。 Powe ...

4 如何使用Python将字符串写入csv文件中的列

我正在尝试使用 csv 模块将字符串写入 csv 文件。 该字符串在 Excel 工作表中作为不同行中的单个字符而不是一个字段中的单个字符打印。 输出就像 我只是想要的是 你好 再见 另外我如何在不同的列中写作? 没有像 writerow() 那样的 writecolumn() ...

10 CSV列中的python中的字符串拆分

因此,我正在使用具有多对一关系的CSV,但有2个问题需要我协助解决。 首先是我将字符串设置为 thisismystr=thisisanemail@addy.com,等等,等等,startnewCSVcol 所以我需要将字符串分割两次,一次=一次,一次,因为我基本上是在尝试获取作为电 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM