代码之家  ›  专栏  ›  技术社区  ›  Parsa

获取第二个系列中第一个系列中元素的索引

  •  1
  • Parsa  · 技术社区  · 7 年前

    我想得到表中所有值的索引 smaller 电视系列 larger 系列答案在下面存储在 ans 变量

    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())
    

    背景:系列 更大的 用作numpy矩阵和系列中列的索引 更小 用作numpy向量中列的索引。我需要矩阵和向量的索引来匹配。

    4 回复  |  直到 7 年前
        1
  •  2
  •   jpp    7 年前

    你可以改变你的想法 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
  •  1
  •   Vikika    7 年前
        for i in list(smaller):
            if i in list(larger):
                print((list(larger).index(i)))
    

        3
  •  1
  •   BENY    7 年前

    使用 Series get

    pd.Series(larger.index, larger.values).get(smaller)
    Out[8]: 
    a     0
    g     6
    b     1
    k    10
    dtype: int64
    
        4
  •  0
  •   BENSALEM Mouhssen    7 年前

    试试这个:)

        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)