我需要计算CSV文件中多个标题同时包含信息的行数,

例如,这是我的CSV文件:


id,gender,name,age
1,M,Kerry Manders,
2,F,Cain Coulton,29
3,,Marcia Bennett,62
4,F,Rachel Werahiko,
5,,Karen Coulton,44
6,M,Sophia Shortcliffe,62
7,M,Files Access,30
8,,,39


是的,CSV中有一些空值,我需要计算多个标题中有非空值的行数.例如,我想计算标题中包含"性别"和"姓名"信息的行,

答案是6行.当然,只需告诉它有多少行,不需要输出文件

gender,name
M,Kerry Manders
F,Cain Coulton
F,Rachel Werahiko
M,Sophia Shortcliffe
M,Files Access


当我计算‘性别’、‘姓名’和‘年龄’时,Python计算出四行

gender,name,age
F,Cain Coulton,29
M,Sophia Shortcliffe,62
M,Files Access,30

我试图通过搜索空值来计算包含信息的行,但我不知道如何继续,或者您是否有其他更好的方法

import csv
with open(r"C:\Users\o\Desktop\1.csv",'r',encoding='UTF-8') as load_input:
    with open(r"C:\Users\o\Desktop\2.csv", 'w', newline='',encoding='UTF-8') as out_output:
        ereader = csv.reader(load_input)
        ewriter = csv.writer(out_output)
        eheader = next(ereader)
        ewriter.writerow(eheader)
        for row_list in ereader:
            image_id = str(row_list[2]).strip()
            if '' in image_id:
                ewriter.writerow(row_list)
            elif '' in image_id:
                print()

推荐答案

您可以将输入CSV读为csv.DictReader的字典序列,并计算所有所需列都非空的字典的数量.将计数加1,以包括用于输出的标题行:

import csv
from io import StringIO

load_input = StringIO('''id,gender,name,age
1,M,Kerry Manders,
2,F,Cain Coulton,29
3,,Marcia Bennett,62
4,F,Rachel Werahiko,
5,,Karen Coulton,44
6,M,Sophia Shortcliffe,62
7,M,Files Access,30
8,,,39''')
query = ['gender', 'name', 'age']
print(sum(all(map(row.get, query)) for row in csv.DictReader(load_input)) + 1)

此输出:4

演示:Try it online!

Python相关问答推荐

手动为pandas中的列上色

如何使用scikit-learn Python库中的Agglomerative集群算法以及集群中声明的对象数量?

如何在vercel中指定Python运行时版本?

Tkinter -控制调色板的位置

使用Python Cerberus初始化一个循环数据 struct (例如树)(v1.3.5)

强制venv在bin而不是收件箱文件夹中创建虚拟环境

请从Python访问kivy子部件的功能需要帮助

Google Drive API获取文件计量数据

如何才能知道Python中2列表中的巧合.顺序很重要,但当1个失败时,其余的不应该失败或是0巧合

Polars比较了两个预设-有没有方法在第一次不匹配时立即失败

比较两个数据帧并并排附加结果(获取性能警告)

如何将双框框列中的成对变成两个新列

按列分区,按另一列排序

无法通过python-jira访问jira工作日志(log)中的 comments

如何获得每个组的时间戳差异?

Python+线程\TrocessPoolExecutor

我的字符串搜索算法的平均时间复杂度和最坏时间复杂度是多少?

与命令行相比,相同的Python代码在Companyter Notebook中运行速度慢20倍

为什么\b在这个正则表达式中不解释为反斜杠

从列表中获取n个元素,其中list [i][0]== value''