我有点迷失在这里,无法真正找到类似的问题。也许还因为我不知道如何搜索。
我想导入names.csv文件,该文件在结构中包含一堆名称:ID,名称,性别,年份,州,计数
现在,我正在尝试将所有名称和count
整数转录成字典,我称之为names
。我不明白为什么它现在不断向我返回一个空字典。
通过条件语句,我想说的是,如果名称已经在字典中,则应该将计数加到现有计数上。
有人可以帮忙吗?可悲的是,我真的是一个新手,不能帮助自己...
with open("../data/names.csv") as file:
names = {}
for lines in file:
data = lines.strip().split(",")
name = data[1]
count = data[5]
if name == "Name":
continue
for name, count in names.items():
if name in names:
names[name] = names[name] + count
else:
names[name] = count
print(names)
答案 0 :(得分:1)
最好使用标准python lib(for details link)中的defaultdict
以及使用csv文件csv模块(link for details)
from collections import defaultdict
food_list = 'spam spam spam spam spam spam eggs spam'.split()
food_count = defaultdict(int) # default value of int is 0
for food in food_list:
food_count[food] += 1 # increment element's value by 1
food_count
结果,您将拥有:
defaultdict(<type 'int'>, {'eggs': 1, 'spam': 7})
答案 1 :(得分:1)
首先,您应该避免自己解析CSV文件,例如,引号涉及。有a csv module built-in
对于您的情况,我将使用pandas。 .groupby()
函数与.sum()
一起可以完全满足您的要求:
import pandas as pd
df = pd.read_csv('names.csv')
print(df[['Name', 'Count']].groupby('Name').sum())