Skip to main content
 首页 » 编程设计

python之添加两个不同的特定 csv 列的值

2025年05月04日16shanyou

所以我目前得到一个看起来像这样的 .csv 文件:

HostType,Number 
Windows_Desktop,84 
Linux_Desktop,12 
Windows_Desktop,60 
Linux_Desktop,7 

我正在尝试编写一个根据总值执行功能的脚本。所以我有两个全局变量:

WINDOWS = 0 
LINUX = 0 

我正在努力使该函数将两个 Window_Desktop 数字加在一起,并将 Linux_Desktop 数字加在一起。所以像..

def count_function(): 
    global WINDOWS 
    global LINUX 
    count_file = open('counts.csv', 'rb') 
    reader = csv.reader(count_file) 
    WINDOWS = float(row[2]) + float(otherrow[2]) 
    LINUX = float(row[2]) + float(otherrow[2]) 

(我知道这是非常错误的语法,只是我想弄清楚的一个简短示例) 但是我不知道如何指定要加在一起的列和行。他们总是在同一个地方。 Windows 总是 2 和 4,Linux 总是 3 和 5。所以我不需要以任何方式对它们进行正则表达式。我只是想弄清楚如何做第 2 行第 2 列 + 第 4 行第 2 列。

基本上,我最终会尝试做类似的事情:

if WINDOWS < 80 
    some_function() 

虽然我已经弄清楚了那部分,但它让数字相加,尽管我敲了多少次脑袋,但我似乎还是弄不明白。

请您参考如下方法:

您需要通过分析第一列的内容来确定您正在收集的东西的类型。由于您正在收集 Windows 和 Linux 总计,因此您可以使用字典来收集这些数据。

试试这个版本:

import csv 
from collections import defaultdict 
 
data = defaultdict(float)  # this just means, the default value of a key 
                           # that doesn't exit is a float 
 
with open('yourfile.csv') as f: 
    reader = csv.reader(f) 
    next(f)  # This will skip the header 
    for row in reader: 
       data[row[0].split('_')[0].strip()] += float(row[1]) 
 
if data['Windows'] < 80: 
   print('Do stuff') 
 
for key, value in data.iteritems(): 
   print('Value for {} is {}'.format(key, value))