У меня есть датафрейм с двумя столбцами: метка и значение. Я хотел бы определить количество уникальных значений в кадре данных, которое встречается в каждой группе меток.
Например, учитывая следующий кадр данных:
test_df = pd.DataFrame({
'label': [1, 1, 1, 1, 2, 2, 3, 3, 3],
'value': [0, 0, 1, 2, 1, 2, 2, 3, 4]})
test_df
label value
0 1 0
1 1 0
2 1 1
3 1 2
4 2 1
5 2 2
6 3 2
7 3 3
8 3 4
Ожидаемый результат равен:
label uni_val
0 1 1 -> {0} is unique value for this label compared to other labels
1 2 0 -> no unique values for this label compared to other labels
2 3 2 -> {3, 4} are unique values for this label compared to other labels
Один из способов сделать это - получить уникальные значения для каждой метки, а затем подсчитать их не дубликаты по всем элементам.
test_df.groupby('label')['value'].unique()
label
1 [0, 1, 2]
2 [1, 2]
3 [2, 3, 4]
Name: value, dtype: object
Есть ли ещеэффективный и простой способ?