因此,我有一段代码,它迭代一个数据,转换为元组,然后在第一个值之后迭代每个值。昨天一切都很好,但是今天,某些行不排除第一个指数,我不知道为什么。
以下是代码:
for rows in data.itertuples():
r = int(rows[0]) + 1
for i in rows[1:]:
c = rows.index(i)
print r, i, c, int(rows.index(i)), rows我从前2行的迭代中复制了打印。第一排工作得很好。第二行有一个问题。对于它获取row1的第一个元素,预期c将被设置为1,但它却是0。这是随机发生的,通过行的数据。有人知道为什么for循环不跳过第一个元素吗?
1 3 1 1 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')
1 1 3
1 27000 2 2 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')
1 2 27000
1 1060 3 3 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')
1 3 1060
1 QMS 4 4 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')
1 4 QMS
1 ARCA 5 5 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')
1 5 ARCA
1 DAY 6 6 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')
1 6 DAY
1 LMT 7 7 (0, 3, 27000, '1060', 'QMS', 'TEST', 'DAY', 'LMT')
1 7 LMT
**2 1 0 0 (1, 1, 3500, '1060', 'QMS', 'TEST', 'DAY', 'LMT')**
2 0 1
2 3500 2 2 (1, 1, 3500, '1060', 'QMS', 'TEST', 'DAY', 'LMT')
2 2 3500
2 1060 3 3 (1, 1, 3500, '1060', 'QMS', 'TEST', 'DAY', 'LMT')发布于 2014-10-28 14:23:29
rows.index(i)将在rows中找到值为i的第一项。当您到达第二个rows集合时,rows[0]等于1,所以rows.index(1)是零,尽管rows[1]也等于1。
如果您只想迭代可迭代的索引和值,我建议使用枚举。
for rows in data.itertuples():
r = int(rows[0]) + 1
for c, i in enumerate(rows):
#skip the first value
if c == 0:
continue
#do whatever here或
for rows in data.itertuples():
r = int(rows[0]) + 1
for c, i in enumerate(rows[1:], 1): #skip the first item implicitly
#do whatever herehttps://stackoverflow.com/questions/26610435
复制相似问题