Как вывести строки в 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) в качестве имен собственных переменных, функций и классов, чтобы избежать ненужных проблем.