我有一个带标题的csv文件,我正在尝试使用标题来识别类中的位置以进行更新。
Age, all, bladder, brain, breast,...
0, 23.34, 0, 3.8905, 0, ...
1, 22.7339, 0, 4.4064, 0,...
我有一个清单&#34;基线&#34;有98个条目,每个条目包括一个字段.cancer,而在.cancer中有字段.all,.bladder,.brain,.breast等等,这样50岁儿童的膀胱癌患病率可以作为< / p>
baseline[50].cancer.bladder.prevalence
我需要一个可以执行以下操作的命令:
k=0
for row in csv_data:
for j in range(len(row)):
baseline[k].cancer.header[j].prevalence = row[j]
k += 1
因此名称的一部分(即膀胱,大脑...)来自标题。有一种简单的方法可以做到这一点吗?
答案 0 :(得分:0)
虽然这看起来像pandas
的工作,但如果列号/顺序是固定的,则可以实现此目的。以下代码应该有效:请注意它利用了一些Python 3功能:
import csv
with open('data.txt') as csvfile:
data = csv.reader(csvfile, delimiter=',')
_, *cancer_columns = next(data) # capture the headers
for age, *cancers in data:
for i, cancer in enumerate(cancers):
# dynamically get attribute and assign based on cancer_columns index
getattr(baseline[age].cancer, cancer_columns[i]).prevalence = float(cancer)