我有一个像这样的熊猫系列:
measure
0 0.3
6 0.6
9 0.2
11 0.3
14 0.0
17 0.1
23 0.9
和像这样的numpy数组:
array([[ 0, 0, 9, 11],
[ 6, 14, 6, 17]])
如何从numpy数组中的值到系列中的索引进行查找以获得此结果:
array([[ 0.3, 0.3, 0.2, 0.3],
[ 0.6, 0.0, 0.6, 0.1]])
答案 0 :(得分:6)
通过np.vectorize
,系列s
和数组a
:
np.vectorize(s.get)(a)
答案 1 :(得分:2)
使用replace
a=np.array([[ 0, 0, 9, 11],
[ 6, 14, 6, 17]])
pd.DataFrame(a).replace(df.measure.to_dict()).values
Out[214]:
array([[0.3, 0.3, 0.2, 0.3],
[0.6, 0. , 0.6, 0.1]])
答案 2 :(得分:2)
使用np.bincount
np.bincount(s.index.values, s.values)[a]
array([[ 0.3, 0.3, 0.2, 0.3],
[ 0.6, 0. , 0.6, 0.1]])
设置
s = pd.Series(
[.3, .6, .2, .3, .0, .1, .9],
[0, 6, 9, 11, 14, 17, 23]
)
a = np.array([
[0, 0, 9, 11],
[6, 14, 6, 17]
])
答案 3 :(得分:1)
您可以使用loc和reshape:
s = pd.Series({0: 0.3, 6: 0.6, 9: 0.2, 11: 0.3, 14: 0.0, 17: 0.1, 23: 0.9})
a = np.array([[ 0, 0, 9, 11],
[ 6, 14, 6, 17]])
s.loc[a.flatten()].values.reshape(a.shape)
Out[192]:
array([[ 0.3, 0.3, 0.2, 0.3],
[ 0.6, 0. , 0.6, 0.1]])
或者:
pd.DataFrame(a).applymap(lambda x: s.loc[x]).values
Out[200]:
array([[ 0.3, 0.3, 0.2, 0.3],
[ 0.6, 0. , 0.6, 0.1]])