在python

时间:2016-11-02 20:37:10

标签: python class

我有一个带标题的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

因此名称的一部分(即膀胱,大脑...)来自标题。有一种简单的方法可以做到这一点吗?

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)