更改列表中特定列的值

时间:2017-10-03 09:51:54

标签: python astronomy

我有一个大型数据文件,我想稍微编辑一下。我检查某列中的值(本例中第8列)是否在多行中具有相同的值,并且如果它与我的"多样性"达到相同的行数。变量I将这些行保存到新数组中。但是,如果未达到这个数量,我想将另一列(第5列)中的值更改为已检查的行数达到的行数(即我的"计数"变量)。这是我的代码不起作用的地方。

multiplicity=7
complete_systems=[]       
for i in range(len(matching_rows)):
    count = 0
    value=matching_rows[i][8]
    for j in range(len(matching_rows)):
        if matching_rows[j][8]==value:
            count+=1
    if count ==multiplicity:
        complete_systems.append(matching_rows[i])
    else count for matching_rows[i][5] in matching_rows:
        complete_systems.append(matching_rows[i])

其中matching_rows是我的数组。示例行:

[memmap(['K00806.02', '60.32494216', '12.19', '89.83', '0.2998', '5', '22',
         '0.8670', '0.9860', '347.20'],
        dtype='<U12'),
 memmap(['K00806.01', '143.2063047', '8.9', '89.83', '0.5336', '5', '9',
         '0.8670', '0.9860', '138.80'],
        dtype='<U12'),
 memmap(['K00232.05', '56.2590881', '2.22', '89.97', '0.287', '5', '22',
         '1.1910', '0.9950', '29.70'],
        dtype='<U12'),

因此代码一直运行到ELSE部分,它只返回一个无效的语法错误。我没有多少编程经验,所以会喜欢一些提示!

2 个答案:

答案 0 :(得分:0)

else count for matching_rows[i][5] in matching_rows:

在Python中没有任何意义。首先,其他后需要冒号:

else:

你可能意味着

elif count for matching_rows[i][5] in matching_rows:

count for matching_rows[i][5] in matching_rows:

在Python中仍然没有任何意义。你可能想要

matching_rows[i][5] in matching_rows:

所以完整的陈述应该是

elif matching_rows[i][5] in matching_rows:

答案 1 :(得分:0)

这似乎完成了这项工作!

if count ==multiplicity:
        complete_systems.append(matching_rows[i])
else:
        matching_rows[i][5]=count
        complete_systems.append(matching_rows[i])