Как я могу получить значения, связанные с индексами объекта индекса Pandas?

#python #pandas #indexing

Вопрос:

Предположим, я должен был

 common_indices = df1.index.intersection(df2.index)
 

что дает <class 'pandas.core.indexes.base.Index'> объект, как я могу восстановить значения, связанные с другим фреймом данных (например df3 ).

Как попытка

 sub_df3 = df3.where(df3.index == common_indices)
 

дает ValueError: Lengths must match to compare

Комментарии:

1. С чем ты пытаешься это сделать df3 ? Когда вы делаете df3.index == common_indices то, что он пытается сделать, это создать массив истинно-ложных значений из равных по элементам.

Ответ №1:

Воспользуйся loc :

 df3.loc[common_indices]
 

Пример:

 import numpy as np
import pandas as pd

df1 = pd.DataFrame(index = range(9), data=np.random.randint(low=100,size=(9,3)))
df2 = pd.DataFrame(index = [1,2,3,4,5], data=np.random.randint(low=100,size=(5,3)))
df3 = pd.DataFrame(index = range(9), data=np.random.randint(low=100,size=(9,3)))

>>> df1.index.intersection(df2.index)
Int64Index([1, 3, 5], dtype='int64')

>>> df3.loc[df1.index.intersection(df2.index)]
    0   1   2
1  90  33  99
3  90  41  43
5   3  10  12
 

Ответ №2:

 df3.loc[common_indices]
 

Не следует путать с:

 df3.loc(common_indices)
 

Что дает TypeError