有没有办法在没有循环的情况下做到这一点?
我正在考虑这样的事情:
pd_series = pd.Series(["c", "d", "a", "b"])
list_map = ["a", "b", "c", "d"]
In [1]: pd_series.find_in(list_map)
Out [1]:
0 2
1 3
2 0
3 1
谢谢!
答案 0 :(得分:3)
假设元素是唯一的,您可以使用实际地图而不是列表:
>>> actual_map = dict(zip(list_map, range(len(list_map))))
>>> actual_map
{'d': 3, 'b': 1, 'a': 0, 'c': 2}
>>> pd_series.map(actual_map)
0 2
1 3
2 0
3 1
dtype: int64
答案 1 :(得分:1)
您可以使用np.vectorize
+ get_loc
np.vectorize(pd.Index(pd_series).get_loc)(list_map)
Out[499]: array([2, 3, 0, 1])