首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >csv数据操作,以保持和比较每个类的大小

csv数据操作,以保持和比较每个类的大小
EN

Stack Overflow用户
提问于 2013-11-14 11:31:52
回答 1查看 58关注 0票数 1

我正在尝试修改一段代码,以便执行以下操作。

在每个数据类(column1)中,将重量转换为磅。计算每个数据类的最大权重是多少。对于数据类的每一行,计算出分配给该行中的person的权重与其类中最大的权重(dataclass)之间的差异,并将其附加到新列中。

这可能是一个相对简单的操作,但我不知道如何在内存中为每个数据类保留大量的权重。我的代码可以将体重转换为磅,但这要简单得多,因为我可以逐行直接循环csv,而不需要记住数据类的先前数据。

示例csv数据集:

代码语言:javascript
运行
复制
data,dataclass1,8-10,data,data
data,dataclass1,9-06,data,data
data,dataclass1,10-00,data,data
data,dataclass1,14-10,data,data
data,dataclass1,12-10,data,data
data,dataclass1,8-11,data,data
data,dataclass1,16-10,data,data
data,dataclass1,20-10,data,data
data,dataclass1,18-10,data,data
data,dataclass2,20-10,data,data
data,dataclass2,8-10,data,data
data,dataclass2,9-06,data,data
data,dataclass2,10-00,data,data
data,dataclass2,14-10,data,data
data,dataclass2,12-10,data,data
data,dataclass2,18-10,data,data
data,dataclass2,8-11,data,data
data,dataclass2,10-00,data,data
data,dataclass2,14-10,data,data
data,dataclass2,12-10,data,data
data,dataclass3,12-10,data,data
data,dataclass3,18-10,data,data
data,dataclass3,8-11,data,data
data,dataclass3,10-00,data,data
data,dataclass3,14-10,data,data
data,dataclass3,12-10,data,data
data,dataclass3,18-10,data,data
data,dataclass3,8-11,data,data
data,dataclass3,10-00,data,data
data,dataclass3,14-10,data,data

我必须将连字符连接的权重转换为磅的代码:

代码语言:javascript
运行
复制
import csv

with open('sample.csv') as f:
    with open('new_file.txt', 'w') as w:
        c = [r for r in csv.reader(f, delimiter=',')]
        data = [
            item[0] * 14 + item[1] for item in
                [map(int, row[2].split('-', 1)) for row in c]
        ]
        for line, d in zip(c, data):
            for l in line:
                w.writelines(str(l) + ',')
            w.writelines(str(d))
            w.writelines('\n')
EN

回答 1

Stack Overflow用户

发布于 2013-11-14 11:45:11

你可以很容易地使用字典来做这件事。

代码语言:javascript
运行
复制
weightDict = dict()
for line in open("filename").readlines():
    items=line.split(",")
    c = items[1]
    if c not in weightDict.keys():
        weightDict[c] = []
    weightDict[c].append(convertToPounds(items[2])) #call your conversion function here

for c in weightDict.keys(): #loop over all classes seen
    print("class: " + c + "max: " + str(max(weightDict[c])) #calls max function on all weights for this class

此函数打印类及其最大权重,但您可以编写它们或通过修改最后一个循环来执行您喜欢的任何操作。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19969008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档