Доступ к строкам данных на основе столбца списков. Если в списке есть уникальная строка, строка будет просмотрена - PullRequest
0 голосов
/ 06 февраля 2020

Это сложно объяснить, поэтому я не смог погуглить мою проблему.

У меня есть фрейм данных. Столбец этого фрейма данных содержит списки. У каждой строки есть список строк. Списки имеют различный размер. Некоторые строки не имеют списка, но имеют значение NaN.

Я хочу иметь возможность просматривать строки кадра данных, которые содержат произвольную строку в своем списке. Поэтому, если я хочу найти все строки, у которых есть список, который содержит «произвольную строку» в качестве элемента списка, эти строки будут выбраны.

Вот изображение, показывающее пример кадра данных.

Я хочу использовать термин "corndog", чтобы вернуть представление строк 1 и 2. Расположение в Список строк не имеет значения. Мои коллеги предложили мне попробовать использовать лямбды, применять специальные функции вместе. Их примеры не сработали для меня.

Они предлагают:

def find_id(inpList:list,inpstr):  
    print(inpList)
    for x in inpList:
        if inpstr in x:
            return(1)
    return(0)

Df[list_of_strings].apply(lambda x: find_id(x, cust string))

Я не совсем уверен, что я делаю. Я не понимаю, как эти вещи могут быть соединены вместе.

1 Ответ

1 голос
/ 06 февраля 2020

IIU C, я думаю, вы можете использовать это:

Оригинал df:

+----+-----------+--------------+----------------------------+
|    | some_int  | some_string  |      List_of_strings       |
+----+-----------+--------------+----------------------------+
| 0  |       84  | something    | [‘cat’,’dog’,’corndog’]    |
| 1  |       74  | etc          | [‘qwetry’,’celphone’]      |
| 2  |       64  | etc          | [‘dog’,corndog’]           |
| 3  |       89  | etc          | [‘etc’,’catfish’,’purple’] |
+----+-----------+--------------+----------------------------+

df[df['List_of_strings'].str.contains('corndog')]

Вывод:


    some_int    some_string  List_of_strings
0   84          something   [‘cat’,’dog’,’corndog’]
2   64              etc     [‘dog’,corndog’]

РЕДАКТИРОВАТЬ с учетом значения столбца типа списка, а не строки, вы можете использовать следующее:

df[df['List_of_strings'].apply(lambda x: 'corndog' in x)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...