Особенности работы np.setdiff1d
Есть датафрейм с названием frame формата:
player_id
0 2560866
1 2560866
2 2560866
3 2560866
4 2552478
и словарь с названием pi формата:
{
2563986: 10892,
2558091: 6479,
2563967: 10783,
2536340: 3766,
2560757: 4657,
2555224: 6515,
2562699: 6548,
}
Хочу найти значения из датафрейма, которые отсутсвуют в словаре в виде ключей.
Использую разницу множеств:
set(frame['player_id'].unique()) - set(pi.keys())
Получаю корректный ответ:
set()
Использую np.setdiff1d :
np.setdiff1d(frame['player_id'].unique(), pi.keys())
Получаю:
array([2495143, 2536340, 2541199, 2552478, 2552487, 2555224, 2558091,
2560735, 2560757, 2560866, 2562699, 2563967, 2563986])
Почему так происходит? В чем заключается особенность поведения numpy?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
думаю проблема в том, что Numpy не понимает тип dict_keys.
Попробуйте так:
In [109]: np.setdiff1d(frame['player_id'].unique(), list(pi.keys()))
Out[109]: array([2552478, 2560866])
In [110]: set(frame['player_id'].unique()) - set(pi.keys())
Out[110]: {2552478, 2560866}