我正在尝试使用Python在csv文件中提取具有最小值的行的所有相关信息。 以下是我的代码,以找出相关信息。 当我对它进行编码时,最小值为12。 但是当我输入该函数并将处理最小值以查找并记录csv文件中的其他数据时。该值无法更新。我缺少更新line [9]的值?
CVS文件包含一列数字,我需要找到最小值。 单独的编码很适合找到12的最小值,我做了它作为测试。但是在我分配一个函数并使用相同的方法来查找最小值后,它不起作用。 因为我需要在代码的其他部分使用最小值,所以如果我可以将它放在函数中并使其工作,那就更好了。 所以我想知道如何转移函数也可以找到最小值。 提前谢谢。
#put finding minimum in to a function and will use the returned minimum
#to pull out other information
def findMin():
minMile = 100
if num<minMile:
minMile=num
return minMile
def main():
fileIn = open("epaVehicleData2008.csv", "r")
fileIn.readline()
for line in fileIn:
line = line.split(",")
num=int(line[9])
findmin(line)
minMile=int(line[9])
print(minMile)
main()
#separate code for finding the minimum as a test
fileIn = open("epaVehicleData2008.csv", "r")
fileIn.readline()
minMile = 100
for line in fileIn:
line = line.split(",")
num = int(line[9])
if num < minMile:
minMile = num
print(minMile)
答案 0 :(得分:0)
这可以使用Python的CSV库来帮助阅读每一行并自动将其拆分为列表:
import csv
def findMin(filename):
with open(filename, 'r', newline='') as f_input:
csv_input = csv.reader(f_input)
return min(csv_input, key=lambda x: int(x[9]))[9]
print('Min mile', findMin('epaVehicleData2008.csv'))
内置min()
函数可用于确定最小的行。它需要一个key
参数来告诉它要与哪个输入部分进行比较,在本例中是第9个元素。
每次拨打findMin()
时,minMile
的值始终为100
。在您的设计中,您需要将变量设置为全局变量,而不是本地变量。也许更好的方法是将函数传递给文件名,让它一次读取并计算最小值并返回该值。
lambda
只是一个内联编写的函数,无需单独的def
。在这种情况下,它将x
作为一行,并将第九个值作为整数返回。