Как получить серию из pandas фрейма данных, используя серию имен столбцов? - PullRequest
3 голосов
/ 05 августа 2020

У меня есть pandas фрейм данных df с данными numeri c. У меня также есть серия s с тем же индексом, что и df, и значения, состоящие из df меток столбцов, например

import pandas as pd
df = pd.DataFrame(
    index=[0, 1, 2], columns=[0, 1, 2],
    data=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
)
s = pd.Series(index=[0, 1, 2]), data=[0, 1, 2])

Как я могу использовать s, чтобы разрезать df и получить другая серия s1, содержащая df значений, соответствующих парам (index, value) в s в качестве их идентификаторов .loc() в df, т.е.

s1 = pd.Series(index=[0, 1, 2], data=[1, 5, 9])

1 Ответ

3 голосов
/ 05 августа 2020

Используйте DataFrame.lookup для поиска значений в df на основе s.index и s, затем создайте новую серию из этих значений поиска:

s1 = pd.Series(df.lookup(s.index, s), index=s.index)

Другая идея с использованием DataFrame.stack и индексация с использованием DataFrame.loc:

s1 = df.stack().loc[zip(s.index, s)].droplevel(1)

Результат:

print(s1)

0    1
1    5
2    9
dtype: int64
...