Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python的CSV文件中打印组中出现的唯一名称_Python - Fatal编程技术网

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

如何在Python的CSV文件中打印组中出现的唯一名称,python,Python,我想打印列中的特定名称及其csv数据 例如: [**Joseph**, 1923, **503**] [Josephine, 1945, 1301] [Josephina, 1952, 66] [**Joseph**, 1999, **3498**] 我只想得到Joseph和第2行的总数,但我还不能使用Panda 该输出应如下所示: 约瑟夫:4001 但是它却显示了所有与Joseph有关的名字,比如Josephine 这是我的代码: import csv, import itertool

我想打印列中的特定名称及其csv数据

例如:

[**Joseph**, 1923, **503**]

[Josephine, 1945, 1301]

[Josephina, 1952, 66]

[**Joseph**, 1999, **3498**]
我只想得到Joseph和第2行的总数,但我还不能使用Panda

该输出应如下所示:

约瑟夫:4001

但是它却显示了所有与Joseph有关的名字,比如Josephine

这是我的代码:

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)

假设您有一个csv文件
file.csv
像这样

Joseph, 1923, 503
Josephine, 1945, 1301
Josephina, 1952, 66
Joseph, 1999, 3498
使用
csv.DictReader
,您可以使用以下代码获取所需内容

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()
,它将打印不带名称的总计。

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

Joseph, 1923, 503
Josephine, 1945, 1301
Josephina, 1952, 66
Joseph, 1999, 3498
使用
csv.DictReader
,您可以使用以下代码获取所需内容

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()
,这将打印没有名称的总计。

我是这里的新手,如何接受已解决的总计?另外,您可以为c3的总数做另一个选择吗?-->总数是4001,没有名字吗?非常感谢@python\u用户。这只是为了显示总数。我是新来的,我怎么能接受这个问题的答案呢?另外,您可以为c3的总数做另一个选择吗?-->总数是4001,没有名字吗?非常感谢@python\u用户。这只是为了显示总数。找到它并接受了答案。