【问题标题】:Get index of elements in first Series within the second series获取第二个系列中第一个系列中元素的索引
【发布时间】:2019-05-11 20:08:23
【问题描述】:

我想为larger 系列获取smaller 系列中所有值的索引。答案就在下面存储在ans变量中的代码sn-p中。

import pandas as pd

smaller = pd.Series(["a","g","b","k"])
larger = pd.Series(["a","b","c","d","e","f","g","h","i","j","k","l","m"])

# ans to be generated by some unknown combination of functions
ans = [0,6,1,10]
print(larger.iloc[ans,])
print(smaller)
assert(smaller.tolist() == larger.iloc[ans,].tolist())

上下文:larger 系列用作 numpy 矩阵中列的索引,smaller 系列用作 numpy 向量中列的索引。我需要矩阵和向量的索引来匹配。

【问题讨论】:

  • 使用列表理解要容易得多。但是,我想你已经知道了:)

标签: python pandas indexing series


【解决方案1】:

您可以反转您的larger 系列,然后使用smaller 对其进行索引:

larger_rev = pd.Series(larger.index, larger.values)
res = larger_rev[smaller].values

print(res)

array([ 0,  6,  1, 10], dtype=int64)

【讨论】:

  • 对您的回答印象深刻,接受回答的冷静期结束后接受此回答。
【解决方案2】:
    for i in list(smaller):
        if i in list(larger):
            print((list(larger).index(i)))

这将为您提供所需的输出

【讨论】:

    【解决方案3】:

    使用Seriesget

    pd.Series(larger.index, larger.values).get(smaller)
    Out[8]: 
    a     0
    g     6
    b     1
    k    10
    dtype: int64
    

    【讨论】:

      【解决方案4】:

      试试这个:)

          import pandas as pd
          larger = pd.Series(["a","b","c","d","e","f","g","h","i","j","k","l","m"])
          smaller = pd.Series(["a","g","b","k"])
      
          res = pd.Series(larger.index, larger.values).reindex(smaller.values, copy=True)
          print(res)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-15
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        • 2019-10-23
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        相关资源
        最近更新 更多