pandas 将数字转换为列表的相应元素

pandas converting numbers to corresponding elements of a list

假设我有一系列数字和一个列表:

s1 = pd.Series([0,1,2,5,4,1,0,2])
mylist = pd.Series(['apples','pears','bananas','oranges','lemons','limes'])

我想创建一个新系列,其中包含使用列表查找的值。如果我这样做 mylist[s1] 值是正确的但索引是错误的:

>>> mylist[s1]
0     apples
1      pears
2    bananas
5      limes
4     lemons
1      pears
0     apples
2    bananas
dtype: object

我可以这样做来得到正确答案,但看起来很麻烦:

>>> pd.Series(mylist[s1].values, index=s1.index)
0     apples
1      pears
2    bananas
3      limes
4     lemons
5      pears
6     apples
7    bananas
dtype: object

有没有更惯用的方法来做到这一点?

In [177]: s1.map(mylist)
Out[177]: 
0     apples
1      pears
2    bananas
3      limes
4     lemons
5      pears
6     apples
7    bananas
dtype: object

Series.map 用途广泛——它不仅接受序列,还可以接受可调用对象(如内置的 Python、map)或系列或字典。