如何将计算应用于文本文件的列?

时间:2019-04-14 13:32:08

标签: python python-3.x csv

我试图将计算应用于csv文件中每一列的每个值,并将旧值替换为这些新的计算值。

#temp_list is a list of lists. Eg. [['1.3','2.2','1.6'],['1.2','4.5','2.3']]
for row in temp_list:
    minimum = min(row) #find minimum value of values in column 2
    y = every value in the 2nd column - minimum

    #for every value in the 2nd column, apply y calculation to it and replace original values with these values
    row[1] = float(row[1])

我知道,如果我这样做

row[1] = float(row[1]) * 3

例如,我将第2列(索引1)中的每个值乘以3。对于上面编写的y计算,我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用zip转置列表列表,将序列转换为列表,然后使用[1]获取第二行(本来是第二列)中的值,以便使用min函数和float作为键函数,根据浮点中的值获取最小的值:

min(list(zip(*temp_list))[1], key=float)

这将返回:2.2

答案 1 :(得分:0)

根据您的评论,我认为这是您想要的。 由于您的列表是字符串,因此Decimalstring

之间会有一些转换
from decimal import Decimal
temp_list = [['1.3','2.2','1.6'],['1.2','4.5','2.3']]

for x in temp_list:
  x[1] = str(Decimal(x[1]) - min(Decimal(y) for y in x))

print(temp_list)
# [['1.3', '0.9', '1.6'], ['1.2', '3.3', '2.3']]