Как вывести строки в DF по списку значений в столбце?

У меня есть вот такой DF:

df = pd.DataFrame({'A': ['100','110','120','130','140','150','160','170'], 
'B': ['a','b','c','d','f','g','h','y'], 'C': ['a','b','c','d','f','g','h','y']})

A   B   C
0   100 a   a
1   110 b   b
2   120 c   c
3   130 d   d
4   140 f   f
5   150 g   g
6   160 h   h
7   170 y   y

И есть список значений, который я получил из другой таблицы, допустим:

list = [110,140,170]

Как мне, применив эти значения к столбцу А, вывести по ним соответствующие строки?

Должно получиться вот так:

    A   B   C
1   110 b   b
2   140 f   f
3   170 y   y

Ответы (1 шт):

Автор решения: MaxU

Значения в списке и в столбце должны быть одинакового типа, а у вас в столбце A - строки, а в списке - целые числа.

In [138]: s = pd.Series(list_).astype(str)

In [139]: df.query("A in @s")
Out[139]: 
     A  B  C
1  110  b  b
4  140  f  f
7  170  y  y

либо наоборот - приводим столбец к числовому типу данных и после этого ищем:

In [141]: df[df["A"].astype(int).isin(list_)]
Out[141]: 
     A  B  C
1  110  b  b
4  140  f  f
7  170  y  y

Если же в ваших реальных данных типы данных в столбце и списке совпадают, то решение будет выглядеть проще:

res = df.query("A in @list_")

или так:

res = df[df["A"].isin(list_)]

PS не используйте зарезервированные слова (такие как list) в качестве имен собственных переменных, функций и классов, чтобы избежать ненужных проблем.

→ Ссылка