Для целей тестирования я определил исходный DataFrame как:
df = pd.DataFrame(data=[
['Halo Mike', 'How are you?', np.nan],
['Hello John', 'Good morning', 'What a nice day'],
['Ello Jack', 'Xyz hello abc', np.nan]])
Как видите, есть 2 элемента, содержащих привет и 2 NaN элементы.Имена столбцов здесь не важны, поэтому я не определил их.
Первый шаг - преобразовать этот DataFrame в Series с отфильтрованными значениями NaN .:
ser = pd.Series(data=df.values.flatten()).dropna()
df.values
получает базовый массив Numpy , flatten
преобразует его в одномерный массив и dropna
удаляет NaN значения.
Затем, чтобы получить элементы этой серии с hello
внутри (без учета регистра), запустите:
ser[ser.str.contains('hello', case=False)].tolist()
В случае данных нашего теста, результат будет:
['Hello John', 'Xyz hello abc']
Я думаю, это именно то, что вы описали в своем комментарии.
Для реальных входных данных (длиннее, чем в моем примере), если вы хотите ограничить поиск только 100 исходными строками, измените df.values
до df.head(100).values
.