Pandas:使用系列进行列表查找
Posted
技术标签:
【中文标题】Pandas:使用系列进行列表查找【英文标题】:Pandas: Use a series to do list look up 【发布时间】:2016-01-22 04:37:41 【问题描述】:我有一系列整数 s
和一个整数列表 l
。我想构建一个新系列t
这样t[i] == l[s[i]]
。 pandas.Series
有一个名为 map
的方法,它对 dict
对象执行此操作,这意味着这样的事情会起作用:
t = s.map(i: v for i, v in enumerate(l))
但是有更直接的方法吗?
【问题讨论】:
IIUC,你就不能t = s.map(pd.Series(l))
吗?
t = [l[s[i]] for i in range(len(s))]
?
@EdChum 是的,你可以!我猜这是正确的答案?
@Alexander l
和 s
的长度没有关系,但是 max(s) < len(l)
。
【参考方案1】:
由于您已经有一个整数列表,因此您可以从中构造一个系列并将其作为map
的数据参数传递:
t = s.map(pd.Series(l))
我不知道您的 Series s
索引是否是随机值,并且您真的想要执行查找,如果是,那么您可以在构造 Series 时将值作为索引传递:
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
【讨论】:
以上是关于Pandas:使用系列进行列表查找的主要内容,如果未能解决你的问题,请参考以下文章