Pandas / Python: Как мне отфильтровать Dataframe или Series с помощью функций? - PullRequest
1 голос
/ 07 мая 2020

У меня есть Dataframe df с, среди прочего, столбцами «Возраст» и «Имя» в моем блокноте Jupyter

Обычно, когда мне просто нужны записи, удовлетворяющие критериям сертификата, я фильтрую, например, по

df[df["Age"]>20]

, что означает «df, где df["Age"] оказывается выше 20, и поэтому он показывает только записи df, где возраст превышает 20

. Теперь я хочу получить только записи, в которых имя содержит «Alex»

df[df["Name"].find("Alex")>-1]         #(".find" returns -1 if Alex is not in in the checked string)

На самом деле это не работает, по-видимому, потому что эта функция применяется ко всей серии, что, очевидно, бессмысленно и поэтому дает ошибку. Я не ожидал такого поведения потому что df["Age"]>20 в первом примере также работал (это означает, что он был применен к каждой отдельной ячейке "Age", а не к самой серии). Есть идеи, как это исправить?

С уважением:)

Ответы [ 2 ]

1 голос
/ 07 мая 2020
alex_df = df[df['Name'] == 'Alex']  

Если у вас несколько имен, вы можете использовать следующее:

name_list = ['Alex', 'Sam', 'Donna']

names_df = df[df['Name'].isin(name_list)] 
0 голосов
/ 07 мая 2020

Поиск строк, в которых столбец Name содержит Alex в качестве подстроки, вероятно, проще всего с помощью pandas средств доступа к строкам:

df[df["Name"].str.contains("Alex")]

Более подробную информацию можно найти в документации из pandas.

...