首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Python在CSV文件中的组中打印出现的唯一名称

如何用Python在CSV文件中的组中打印出现的唯一名称
EN

Stack Overflow用户
提问于 2021-01-29 03:14:15
回答 1查看 132关注 0票数 0

我想在csv中从列及其数据中打印一个特定的名称。

例如:

代码语言:javascript
复制
[**Joseph**, 1923, **503**]

[Josephine, 1945, 1301]

[Josephina, 1952, 66]

[**Joseph**, 1999, **3498**]

我只想得到约瑟夫和第二行的总数,我还不能用熊猫。

该输出应该如下所示:

Joseph: 4001

相反,它显示了约瑟夫的所有名字,比如约瑟夫ine

这是我的密码:

代码语言:javascript
复制
import csv,
import itertools, 
import operator

levelgetter = operator.itemgetter(0)

col2sumgetter =operator.itemgetter(2)

baby_name = input("Enter the first name to analyze: ")

 with open("baby_names.csv", "r") as file:

    reader = csv.reader(file)
    name = lambda row: levelgetter(row)
    sorted_rows = sorted(reader, key=name)   
    for level, group in itertools.groupby(sorted_rows, key=name):
        if baby_name in level:
            total = sum(int(col2sumgetter(row)) for row in group)
            print(level, total)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-29 03:35:31

假设您有一个csv文件file.csv,如下所示

代码语言:javascript
复制
Joseph, 1923, 503
Josephine, 1945, 1301
Josephina, 1952, 66
Joseph, 1999, 3498

您可以使用下面的代码来使用csv.DictReader获取所需的内容。

代码语言:javascript
复制
import csv

baby_name = input('Enter the first name')

with open('file.csv') as file:
    rows = list(csv.DictReader(file, fieldnames = ['c1', 'c2', 'c3']))

res = {}

for row in rows:
    if row['c1'] == baby_name:
        res[baby_name] = res.get(baby_name, 0) + int(row['c3'])

print(res) # {'Joseph': 4001}

要获得总数,只需执行res.values(),这将打印总计没有名称。

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

https://stackoverflow.com/questions/65948298

复制
相关文章

相似问题

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