в пандах рассчитать произведение значений строк в столбце (которые сгруппированы по категориям) и назначить значение продукта для всех строк в каждой группе? - PullRequest
0 голосов
/ 12 мая 2018

у моего dataframe df есть 3 столбца 'часть': номер детали 'test': название теста 'test_pass': результат прохождения или неудачи для каждого теста. 1 - прохождение, 0 - сбой.

enter image description here

Я хочу создать четвертый столбец 'part_pass'. Для любой «части», если хотя бы один «test_pass» равен 0, эта «часть» является ошибочной частью. Для этой части я хочу получить 'part_pass', равный 0 для всех строк этой 'части'.

Для любой «части», если все «test_pass» равны 1, эта «часть» является проходной частью. Для этой части я хочу получить 'part_pass', равный 1 для всех строк этой 'части'.

enter image description here

Как рассчитать произведение 'test_pass', сгруппированного по 'part', и присвоить полученное значение строкам 'part_pass' по группе деталей?

1 Ответ

0 голосов
/ 12 мая 2018

Код для воспроизведения вашего набора данных:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...