Мне нужна помощь в поиске списка значений в pandas Dataframe, а затем в разделении строки, в которой найдено значение

Чего я хочу достичь: Мне было интересно, как лучше всего найти любое значение списка в фрейме данных pandas, а затем отделить строку, в которой находится это значение.

Вот что я попробовал

def searchXlsx(xlsx_file: str, numbers: list) -> list:
    
    with open(os.path.realpath(xlsx_file), "rb") as i:
        i = pd.read_excel(i)
        print(i[i.isin(numbers)])

я хотел бы вернуть строку, в которой она находится

Я не понимаю, что ты хочешь сделать - ты имеешь в виду return i[i.isin(numbers)] ?

furas 01.05.2024 03:51

мне нужно найти, в какой строке появляется любое значение в списке чисел, и вернуть всю строку

Joka 01.05.2024 04:07
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать .isin:

import numpy as np
import pandas as pd

searchvals = np.array([1,45,87,9]) #The values to find

#Create a random dataframe of integers with 100k rows and 10 columns
size = (100000, 10)
columns = [f"col_{x}" for x in range(size[1])]
df = pd.DataFrame(data=np.random.randint(low=0, high=1000, size=size), columns=columns)

matches = df.isin(searchvals).any(axis=1) #A series of True/False where each value correspond to a row 

df2 = df.loc[matches] #Extract the matching rows into a new dataframe
df2.head()
#       col_0  col_1  col_2  col_3  col_4  col_5  col_6  col_7  col_8  col_9
# 34       793    893    435    312    812     87    990    552    496    397
# 47       818    902    478    479    736     83    135     45    180    224
# 55         9    750    118    910    205    866    617    232    506    755
# 94       326    303    868      9    583    310    668    614    720     50
# 99       167    148    586    570    196    473    829     87    266    194

Другие вопросы по теме