Python CSV和Sum

2024-04-24 12:32:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用一个公司名称来加总金额,但公司名称的格式通常是不同的。。比如苹果公司有时是苹果电脑,苹果公司。 也。。我不知道该怎么处理“头”

我的文件格式是CSV。在

company amount
a   20
b   10
A'  30
bb  20

我想这样做:

^{pr2}$

Tags: csv名称格式公司amountcompanybbpr2
2条回答

您的数据不是真正的CSV格式。表观列之间没有逗号,也没有制表符,甚至没有一个空格。有时有多个空格。。。如果这是一个以空格分隔的值文件,则每个空格将指示一个新列。多个空格意味着每行有两个以上的列。在

这个细节很重要,因为CSV文件很容易被csv module解析。我们不能使用CSV文件,因为这个不是真的。在

假设总是只有两列用空格隔开,最后一列表示数值(第一行除外):

total=0
with open('data.csv','r') as f:
    next(f)  # skip the first (header) line 
    for line in f:
        company,amount=line.rsplit(' ',1)
        amount=float(amount)
        if 'Apple' in company:
            total+=amount
print(total)

你需要以某种方式映射出名字的变化,要么单独合计每个名字,然后手工组合,要么事先制作一个字典,识别每个公司使用的所有别名。if 'Apple' in line:很难失败,因为它无法察觉地将不同公司的资金混合在一起。在

Company = {"Apple": 1, "Apple Computer": 1, "AAPL": 1, "Apple, Inc": 1,
           "Apple Vacations": 2, "Applebee's Restaurant": 3 }

sum[Company[name]] += amount

编辑2:如果您事先不知道所有的公司名称,那么您所能做的就是跟踪输入文件中包含的唯一名称,并决定以后是否合并它们:

^{pr2}$

相关问题 更多 >