Код для воспроизведения вашего набора данных:
df = pd.DataFrame()
df["part"] = [1,2,3,1,2,3,1,2,3]
df["test"] = ["test1"]*3 + ["test2"]*3 + ["test3"]*3
df["test_pass"] = [1,1,0,1,1,1,1,1,1]
part test test_pass
0 1 test1 1
1 2 test1 1
2 3 test1 0
3 1 test2 1
4 2 test2 1
5 3 test2 1
6 1 test3 1
7 2 test3 1
8 3 test3 1
Вам нужна следующая логика (почти то, что вы получили, но с использованием индексов):
df2 = df.set_index("part")
df2["part_pass"] = df.groupby("part")["test_pass"].prod()
df2 = df2.reset_index()
part test test_pass part_pass
0 1 test1 1 1
1 2 test1 1 1
2 3 test1 0 0
3 1 test2 1 1
4 2 test2 1 1
5 3 test2 1 0
6 1 test3 1 1
7 2 test3 1 1
8 3 test3 1 0