【问题标题】:Pandas: Use a series to do list look upPandas:使用系列进行列表查找
【发布时间】: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 ls 的长度没有关系,但是 max(s) < len(l)

标签: python list pandas series


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-26
    • 2016-09-18
    • 1970-01-01
    • 2021-04-20
    • 2019-08-10
    • 1970-01-01
    • 2018-02-26
    • 2016-04-23
    相关资源
    最近更新 更多