我想在csv中从列及其数据中打印一个特定的名称。
例如:
[**Joseph**, 1923, **503**]
[Josephine, 1945, 1301]
[Josephina, 1952, 66]
[**Joseph**, 1999, **3498**]我只想得到约瑟夫和第二行的总数,我还不能用熊猫。
该输出应该如下所示:
Joseph: 4001
相反,它显示了约瑟夫的所有名字,比如约瑟夫ine。
这是我的密码:
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)发布于 2021-01-29 03:35:31
假设您有一个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(),这将打印总计没有名称。
https://stackoverflow.com/questions/65948298
复制相似问题