我一直试图操作一些代码来查看第3列中不同的uniqueclassindicator
,如果第3列是2
,那么查看同一uniqueclassindicator
中的前一行,从该行中检索数据。另外,只有当第3列和第6列都是1
时,才能实现我的输出。在
from collections import defaultdict
import csv
# you probably can think up better names
fields = ('TitleA', 'TitleB', 'TitleIndicator', 'TitleRNum', 'TitleC', 'TitleD', 'TitlePNum', 'TitleBF', 'TitleCheck')
entries = defaultdict(dict)
with open("exampledata.csv", 'rb') as fd:
reader = csv.DictReader(fd, fields)
for counter, row in enumerate(reader):
if counter != 0:
TitleRNum = int(row['TitleRNum'])
if row['TitlePNum']:
TitlePNum = int(row['TitlePNum'])
else:
TitlePNum = ""
Check = row['TitleCheck']
Name = row['TitleB']
key = (TitleRNum, TitleRNum)
previous = entries[row['TitleIndicator']]
if Check:
# Scenario 1
if (1, 1) in previous:
if (key[0] == 2 and key[1]>=2) or key[1] is None: # If Rank 2 and Position is Anything
if TitleRNum == 2:
p = previous[(2, 1)]
print '{p[TitleB]} {r[TitleB]} {p[TitleRNum]} {r[TitleRNum]} {p[TitlePNum]} {r[TitlePNum]} {p[TitleBF]} {r[TitleBF]} {p[TitleCheck]} {r[TitleCheck]}'.format(p=p, r=row)
# remember this row for later rows to match against.
previous[key] = row
Joe,Bob,1,2,1,2,984.2,994.2,Yes,Yes
Mark,Jason,1,2,1,9,295.1,,F,,
因此,为了在TitleIndicator/Uniqueclassindicator定义的每个组中阐明,如果列6和列3都等于1,我希望能够从该组的前两行中提取数据。在
如果有人能告诉我如何修复这段代码,将不胜感激。 非常感谢
你在文章的标题中使用了“键”,所以我在这里提供了一个字典的解决方案:)和哇(!)能这样做感觉很好。在
当我在同一目录中使用
^{pr2}$exampledata.csv
运行此命令时,我得到以下输出:这是有效的:
好吧,竞争已经结束,但我还是想给出我的解决方案。以下是详细的评论答案:
以下是正常情况下的答案:
^{pr2}$输出:
如您所见,我的解决方案更小,效率更高。在
相关问题 更多 >
编程相关推荐