gpt4 book ai didi

python - 为什么我的 csv 排序功能不起作用?

转载 作者:行者123 更新时间:2023-12-01 05:57:10 25 4
gpt4 key购买 nike

我正在获取一个带有标题行的 csv 文件(称为 aggregate_file),按列对其进行排序,然后将其重新写入另一个 csv 文件(称为 sorted_file) )。我想要排序的列标题由 variable_names 指定。

def sortbyCounty(aggregate_file, sorted_file, *variable_names): 
f = open(aggregate_file, 'r')
readit = csv.reader(f)
headers = readit.next()
col_indices = []
for var in variable_names:
col_indices.append(headers.index(var))
print col_indices
thedata = list(readit)
thedata.sort(key=operator.itemgetter(col_indices))
fx = open(sorted_file, 'w')
writeit = csv.writer(fx)
writeit.writerow(headers)
writeit.writerows(thedata)
writeit.close()
return sorted_file

接下来,我在以下几行中调用此函数:

aggregate_file = "Aggregate_test90.csv"
sorted_file = "County_test90.csv"
variable_names = 'CTYCODE90'
test = sortbyCounty(aggregate_file, sorted_file, *variable_names)

这是我的错误消息:

col_indices.append(headers.index(var))
ValueError: list.index(x): x not in list

但是,当我打印我的headers列表时,我可以清楚地看到我的变量存在:

['_STATE90', 'HEIGHT90', 'WEIGHT90', '_BMI90', 'AGE90', 'CTYCODE90', 'IYEAR90', 'SEX90', '_RFOBESE90']

所以我根本不明白为什么我会收到此错误消息。我缺少什么?

最佳答案

variable_names 应该是字符串的列表元组。由于字符串的行为也类似于序列,因此 variable_names 上的 * 会将您的函数调用转换为:

sortbyCounty(aggregate_file, sorted_file, 'C', 'T', 'Y', 'C', 'O', 'D', 'E', '9', '0')

当你明确希望函数调用像这样时:

sortbyCounty(aggregate_file, sorted_file, 'CTYCODE90')

variable_names 制作为字符串列表或元组就可以了。

关于python - 为什么我的 csv 排序功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11912155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com