вернуть все столбцы со значениями, которые содержат строковые панды - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть датафрейм, подобный приведенному ниже. Я хотел бы найти все столбцы в кадре данных, которые содержат строку «abc», и вернуть список этих полей, как в примере ниже. Если бы я искал строки, я бы использовал isin, но я не уверен, как получить столбцы. Любые советы приветствуются.

Пример:

Print df

Field1  Field2  Field3
f_abc   23      dog
Df3     bb      ju


Return 

Field1

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Вы также можете использовать панд pd.Series.isin, которые возвращают логическую серию.

mydf = pd.DataFrame(data={'Field1':['f_abc', 21], 'Field2':[23, 'bb'], 'Field3':['dog', 'ju']}, columns=['Field1', 'Field2', 'Field3'])

print([i for i in mydf if mydf[i].isin(['f_abc']).any()])

(пока нет репутации, чтобы добавить это в качестве комментария)

0 голосов
/ 27 апреля 2018

Вы можете сделать это с пониманием списка на df.columns.

Сначала давайте создадим пример кадра данных:

df = pd.DataFrame(columns=["A", "B", "C"], data=[['abc']*3]*3)
df['D'] = 'ab'

Результат:

     A   B   C  D
0   abc abc abc ab
1   abc abc abc ab
2   abc abc abc ab

Теперь давайте напечатаем только столбцы, которые содержат 'abc':

print([col for col in df.columns if df[col].str.contains("abc").any()])

['A', 'B', 'C']

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