Как выбрать ряд (ы) панд, значение атрибута столбца которых равно любому значению из списка - PullRequest
0 голосов
/ 25 октября 2018
data = {
    "name": ["abc", "xyz", "pqr"],
    "attributes": [["attr2", "attr3"], ["attr2","attr4"], ["attr3", "attr1"] ]
}

df = pd.DataFrame.from_dict(data)

Как отфильтровать строки, удовлетворяющие этому условию: выберите строку, если столбец ее атрибутов содержит значения любого из «attr1» или «attr3»

Ожидаемый результат:

    name      attributes
0  "abc"  ["attr2", "attr3"]
1  "pqr"  ["attr3", "attr1"]

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Использование

df[pd.DataFrame(df.attributes.tolist()).isin(['attr1','attr3']).any(1)]
Out[295]: 
       attributes name
0  [attr2, attr3]  abc
2  [attr3, attr1]  pqr
0 голосов
/ 25 октября 2018

Чтобы получить логический индексатор,

>>> idx = df['attributes'].map(lambda l: any(s in l for s in ['attr1', 'attr3']))
>>> idx
0     True
1    False
2     True
Name: attributes, dtype: bool

Затем

>>> df.loc[idx]
  name      attributes
0  abc  [attr2, attr3]
2  pqr  [attr3, attr1]

Если вы хотите сбросить индекс позже, решать вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...