Надеюсь, заголовок не слишком запутан.
У меня есть фрейм данных, и я пытаюсь сохранить только те значения, сгруппированные по 'id'
, которые имеют одно и то же значение в 'validity'
. Другими словами, три строки с id=0
должны сохраняться только в том случае, если соответствующие 3 значения в validity
одинаковы (либо все три равны 0, либо все три равны 1).
Еще раз в Другими словами, если три значения, которые имеют общий id
, не имеют одинаковых validity
, отфильтруйте их.
import pandas as pd
import numpy as np
a = np.repeat(np.arange(6), 3)
b = np.random.choice([0, 1], p=[.15, .85], size=18)
c = np.repeat(['dog', 'cat', 'platypus'], 6)
df = pd.DataFrame(zip(a, b, c), columns=['id', 'validity', 'kind'])
id validity kind
0 0 1 dog
1 0 1 dog
2 0 0 dog
3 1 1 dog # only keep those
4 1 1 dog # only keep those
5 1 1 dog # only keep those
6 2 1 cat
7 2 0 cat
8 2 1 cat
9 3 1 cat
10 3 1 cat
11 3 0 cat
12 4 1 platypus
13 4 0 platypus
14 4 1 platypus
15 5 1 platypus
16 5 0 platypus
17 5 1 platypus