Эффективный способ выбора строки в DataFrame на основе изменяющегося списка столбцов - PullRequest
0 голосов
/ 30 ноября 2018

Предположим, у нас есть следующий DataFrame:

dt = {'A': ['a','a','a','a','a','a','b','b','c'],
      'B': ['x','x','x','y','y','z','x','z','y'],
      'C': [10, 14, 15, 11, 10, 14, 14, 11, 10],
      'D': [1, 3, 2, 1, 3, 5, 1, 4, 2]}
df = pd.DataFrame(data=dt)

Я хочу извлечь определенные строки на основе словаря, где ключи - это имена столбцов, а значения - значения строк.Например:

d = {'A': 'a', 'B': 'x'}
d = {'A': 'a', 'B': 'y', 'C': 10}
d = {'A': 'b', 'B': 'z', 'C': 11, 'D': 4}

Это можно сделать с помощью цикла (рассмотрим последний словарь):

for iCol in d:
    df = df[df[iCol] == d[iCol]] 
Out[215]: 
   A  B   C  D
7  b  z  11  4

Поскольку ожидается, что DataFrame будет довольно большим и может иметь много столбцов для выбораЯ ищу эффективный способ решения проблемы без использования цикла for для итерации кадра данных.

1 Ответ

0 голосов
/ 30 ноября 2018

Используйте нижеприведенное, сделайте диктат Series:

print(df[(df[list(d)] == pd.Series(d)).all(axis=1)])

Вывод:

   A  B   C  D
7  b  z  11  4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...