Pandas: выбор строк в кадре данных с использованием серии строк - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть список фамилий в серии, s:

print(s)

Order
1       Surname01
2       Surname02
3       Surname03
4       Surname04
5       Surname05
          ...    
496     Surname06
497     Surname07
498     Surname08
499     Surname09
500     Surname10

У меня есть табулированные имена, адреса, номера телефонов и т. Д. c. в кадре данных, df:

           Unnamed: 0  Unnamed: 0.1  ...           Phone      Unnamed: 7
Last Name                            ...                                
Surname01           0           NaN  ...             NaN             NaN
Surname02           1           NaN  ...             NaN             NaN
Surname11           2           NaN  ...             NaN             NaN
Surname12           3           NaN  ...  (123) 456-7890  (123) 456-7890
Surname05           4           NaN  ...  (123) 456-7890  (123) 456-7890
...               ...           ...  ...             ...             ...
Surname13          94           NaN  ...  (123) 456-7890  (123) 456-7890
Surname14          95           NaN  ...  (123) 456-7890  (123) 456-7890
Surname15          96           NaN  ...             NaN             NaN
Surname16          97           NaN  ...             NaN             NaN
Surname17          98           NaN  ...             NaN             NaN

Я хочу создать новую таблицу из df только с фамилиями в s. Я прочитал много страниц, но не могу понять это. Вот где я нахожусь:

df = df.loc[s]

Но я получаю KeyError: 'Фамилия'

1 Ответ

0 голосов
/ 20 апреля 2020

Попробуйте df.loc[df.index.isin(s), :]

Пример

s = pd.Series(['a', 'b', 'c', 'd'])

df = pd.DataFrame(index=['a', 'f', 'd'], 
                  data={'col1': [10, 11, 12], 'col2': [1, 2, 3]})

df.loc[df.index.isin(s), :]

   col1  col2
a    10     1
d    12     3
...