我正在尝试更改一段代码以执行以下操作。
在每个数据类 ( column1
) 中将重量转换为磅。计算每个数据类的最大权重是多少。对于数据类的每一行,计算分配给该行中人员的权重与其类中最大的权重之间的差异(dataclass
)并附加到新列。
这可能是一个相对简单的操作,但我不知道如何将每个数据类的每个大权重保存在内存中。我的代码可以将重量转换为磅,但这要简单得多,因为我可以直接逐行循环遍历 csv,而无需记住数据类的先前数据。
一个示例 csv 数据集:
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
我必须将连字符的重量转换为磅的代码:
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')