什么是通过在Python 2.7 CSV文件较大迭代,比较3列的最简单/最简单的方法是什么?的Python 2.7,比较3列的CSV
我是一个总初学者,只完成了几个在线课程,我已成功地使用CSV读者做的CSV文件中的一些基本的统计数据,但没有内相互比较组。
的数据被大致设置如下:
Group sub-group processed
1 a y
1 a y
1 a y
1 b
1 b
1 b
1 c y
1 c y
1 c
2 d y
2 d y
2 d y
2 e y
2 e
2 e
2 f y
2 f y
2 f y
3 g
3 g
3 g
3 h y
3 h
3 h
一切属于一个组,但各组内的是3行(重复)子组。由于我们是通过样品的工作,我们将加入到处理的专栏,但我们并不总是做充分的补充,所以有时只会有1或2个加工出来的潜力3.
的我正在努力朝向表示各组的%完整性的统计工作,与子组是“完整的”,如果它有处理(不必有所有3)至少1行。
我已经成功地得到了一半的,通过以下:
for row in reader:
all_groups[group] = all_groups.get(group,0)+1
if not processed == "":
processed_groups[group] = processed_groups.get(group,0)+1
result = {}
for family in (processed_groups.viewkeys() | all_groups.keys()):
if group in processed_groups: result.setdefault(group, []).append(processed_groups[group])
if group in processed_groups: result.setdefault(group, []).append(all_groups[group])
for group,v1 in result.items():
todo = float(v1[0])
done = float(v1[1])
progress = round((100/done * todo),2)
print group,"--", progress,"%"
与上面的代码是它并没有考虑到一个事实,即某些子组可能不完全的问题处理。因此,除非处理的列始终完整,否则统计信息将永远不会读为100%。
What I get:
Group 1 -- 55.56%
Group 2 -- 77.78%
Group 3 -- 16.67%
What I want:
Group 1 -- 66.67%%
Group 2 -- 100%
Group 3 -- 50%
你将如何让这个它只是看起来,看第一行的各子列已经完成,只使用,继续到下一个子组之前?要做到这一点