Эквивалент Pandas Series.map в NumPy - PullRequest
0 голосов
/ 04 октября 2018

У меня есть словарь поиска значений dictionary = {'a': 1, 'b': 2, 'c': 3, 'd': 3}

Результат, который я хочу получить от numpy, - это то, что pandas.Series.map() возвращает после передачи в словарь.Например, series.map(dictionary, na_action='ignore')

ПРИМЕЧАНИЕ: эта функция series.map() чрезвычайно быстра, что заставляет меня поверить, что должен быть эквивалент в numpy API, а не в том, чтобы я реализовывал какое-то решение, включающее numpy.where() и для циклического перебора ключей словаря.,

1 Ответ

0 голосов
/ 04 октября 2018

Вот один из NumPy -

def map_series_by_dict(s, d):
    a = s.values
    v = np.array(list(d.values()))
    k = np.array(list(d.keys()))    
    sidx = k.argsort()
    out_ar = v[sidx[np.searchsorted(k,a,sorter=sidx)]]
    return pd.Series(out_ar, index=s.index)

Пробный прогон -

In [143]: d
Out[143]: {'a': 1, 'b': 2, 'c': 3, 'd': 3}

In [144]: s
Out[144]: 
0    a
1    a
2    c
3    b
4    a
dtype: object

In [145]: map_series_by_dict(s, d)
Out[145]: 
0    1
1    1
2    3
3    2
4    1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...