Pandas:使用系列做列表查找
Pandas: Use a series to do list look up
我有一系列整数 s
和一个整数列表 l
。我想构建一个新系列 t
使得 t[i] == l[s[i]]
。 pandas.Series
有一个名为 map
的方法,它为 dict
对象执行此操作,这意味着这样的事情会起作用:
t = s.map({i: v for i, v in enumerate(l)})
但是有更直接的方法吗?
因为你已经有了一个整数列表,所以你可以从中构造一个系列并将其作为 map
:
的数据参数传递
t = s.map(pd.Series(l))
我不知道你的系列 s
索引是否是随机值,你真的想执行查找,如果是这样,那么你可以在构建系列时将值作为索引传递:
In [15]:
s = pd.Series(np.arange(4))
l = [0,4,7,9]
s
Out[15]:
0 0
1 1
2 2
3 3
dtype: int32
In [16]:
s.map(pd.Series(index=s.values, data=l))
Out[16]:
0 0
1 4
2 7
3 9
dtype: int64
我有一系列整数 s
和一个整数列表 l
。我想构建一个新系列 t
使得 t[i] == l[s[i]]
。 pandas.Series
有一个名为 map
的方法,它为 dict
对象执行此操作,这意味着这样的事情会起作用:
t = s.map({i: v for i, v in enumerate(l)})
但是有更直接的方法吗?
因为你已经有了一个整数列表,所以你可以从中构造一个系列并将其作为 map
:
t = s.map(pd.Series(l))
我不知道你的系列 s
索引是否是随机值,你真的想执行查找,如果是这样,那么你可以在构建系列时将值作为索引传递:
In [15]:
s = pd.Series(np.arange(4))
l = [0,4,7,9]
s
Out[15]:
0 0
1 1
2 2
3 3
dtype: int32
In [16]:
s.map(pd.Series(index=s.values, data=l))
Out[16]:
0 0
1 4
2 7
3 9
dtype: int64