Как проверить, может ли значение в одном столбце содержать больше, чем значение в другом столбце - PullRequest
1 голос
/ 08 апреля 2020

У меня есть следующий фрейм данных:

df = pd.DataFrame()
df['id'] = [1, 1, 2, 2]
df['col1'] = [10, 10, 20, 20]
df['col2'] = [100, 200, 50, 50]
df['col3'] = [1, 2, 3, 4]

Цель

Из этого фрейма данных я хочу вернуть часть фрейма данных со значением в col1 может иметь несколько значений в col2 для определенного ID . В этом случае id '1' имеет значение в col1, равное 10, и 100 в col2. Поскольку id '1' также имеет значение 10 в col1 во второй строке, значение в col2 также должно быть 100. Это не относится к этому идентификатору, однако это относится к идентификатору '2'. Он должен работать в обоих направлениях, поэтому значения col1 и col2 должны просто соответствовать друг другу для идентификатора. Столбец 3 содержит другие значения, которые не важны для сопоставления, но должны быть включены в кадр данных.

Желаемый вывод

Часть кадра данных, где значения столбцов не соответствует .

df = pd.DataFrame()
df['id'] = [1, 1]
df['col1'] = [10, 10]
df['col2'] = [100, 200]
df['col3'] = [1, 2]

1 Ответ

1 голос
/ 08 апреля 2020

Вы группируете и проверяете количество уникальных значений для каждого значения в столбце col1, и если оно равно 1, вы сохраняете его:

df = df[(df.groupby(['id', 'col1'])['col2'].transform(lambda x: x.nunique()!=1))]
print(df)

id  col1  col2
2    20    50
2    20    50
...