Python if循环在比较下一个值时没有正确执行条件



我正在尝试迭代从数据框中提取的位置值列表,并将位置值的部件号分配给另一个csv列。

下面是我的列表的一个例子:

[0.3, 0.3, 0.5, 0.5, 0.3, 0.65, 0.65, 0.65, 1.2, 1.0, 1.0, 1.0] 

当有+0.35或+0.55的变化,这意味着有一个新的部分。如果有-0.2或+0.2的变化,它仍然是相同的部分。如果是相同的值,则是相同的部分。

各自的输出将是:

0.3, part1
0.3, part1
0.5, part1
0.5, part1
0.3, part1
0.65, part2
0.65, part2
0.65, part2
1.2, part3
1.0,part3
1.0,part3
1.0,part3
...

现在我试着编写一个脚本,但出于某种原因,我的if语句改变当有一部分+ 0.35不是工作而是休息。

例如我得到这个:

4.75,part 8
4.75,part 8
5.1,part 8
...
5.1,part 8
5.65,part 9
5.45,part 9
5.65, part 9

显然,唯一的问题是,当有一个变化到0.35,它不增加零件号。其余条件成功。我的代码如下:

import pandas as pd
import csv

new_df = pd.read_csv("new_df.csv")

col_list = new_df['builder'].tolist()
#result = [(i,j) for i,j in enumerate(col_list) if col_list[i]!=col_list[i-1] ]
#print(result)
with open('part.csv', 'w', newline='') as layer_csv:
writer = csv.writer(layer_csv)
writer.writerow(["position","Part"])
n=0
for i in range(len(col_list) -1):
part_check = col_list[i] + 0.35
part_check2 = col_list[i] + 0.55
part_check3 = col_list[i] - 0.2
part_check4 = col_list[i] + 0.2

if col_list[i] == col_list[i+1]:
writer.writerow([col_list[i],"Part" + "" + str(n)])
if col_list[i] + 0.35 == col_list[i+1]:
n+=1
writer.writerow([col_list[i],"Part" + "" + str(n)])
elif col_list[i] + 0.55 == col_list[i+1]:
writer.writerow([col_list[i],"Part" + "" + str(n)])
n+=1
elif col_list[i] - 0.20 == col_list[i+1] or col_list[i] + 0.20 == col_list[i+1]:
writer.writerow([col_list[i],"Part" + "" + str(n)])

你可以这样做:

import csv
lst = [0.3, 0.3, 0.5, 0.5, 0.3, 0.65, 0.65, 0.65, 1.2, 1.0, 1.0, 1.0]
with open('part.csv', 'w') as f:
writer = csv.writer(f)
writer.writerow(["position", "Part"])
part = 1
for row in range(len(lst)):
if row == 0:
writer.writerow([str(lst[row]), 'part 1'])
else:
diff = round(lst[row] - lst[row - 1], 2)
if diff in [0.35, 0.55]:
part += 1
writer.writerow([str(lst[row]), f'part {part}'])

part.csv

position,Part
0.3,part 1
0.3,part 1
0.5,part 1
0.5,part 1
0.3,part 1
0.65,part 2
0.65,part 2
0.65,part 2
1.2,part 3
1.0,part 3
1.0,part 3
1.0,part 3

相关内容

  • 没有找到相关文章

最新更新