Получить индекс элементов в первой серии во второй серии - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу получить индекс всех значений в серии 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())

Контекст: Серия larger служит индексом для столбцов в матричной таблице, а серия smaller служит в качестве индексаиндекс для столбцов в числовом векторе.Мне нужны индексы для матрицы и вектора, чтобы соответствовать.

Ответы [ 4 ]

0 голосов
/ 11 декабря 2018

попробуйте это:)

    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)
0 голосов
/ 11 декабря 2018

Вы можете перевернуть серию larger, а затем индексировать ее с помощью smaller:

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

print(res)

array([ 0,  6,  1, 10], dtype=int64)
0 голосов
/ 11 декабря 2018

Использование Series get

pd.Series(larger.index, larger.values).get(smaller)
Out[8]: 
a     0
g     6
b     1
k    10
dtype: int64
0 голосов
/ 11 декабря 2018
    for i in list(smaller):
        if i in list(larger):
            print((list(larger).index(i)))

Это даст вам желаемый результат

...