#pandas #dataframe #pandas-loc
#pandas #dataframe #pandas-loc
Вопрос:
Во-первых, мне пришлось импортировать некоторые данные, выполнив следующее:
from eliteprospect import eliteprospect_scraper as ep
import numpy as np
import pandas as pd
nhl_2020 = ep.getPlayers('nhl', '2019-20')
players = pd.concat([nhl_2020])
lakings = players.loc[players['team'] == 'Los Angeles Kings']
lakingsdefs = lakings.loc[lakings['fw_def'] == 'DEF']
lakingsdefs_pos = lakingsdefs[['playername','position']]
##print(lakingsdefs_pos)
Затем я получаю очень простой dataframe, созданный с помощью Pandas следующим образом:
playername position
178 Drew Doughty D
295 Sean Walker D
382 Matt Roy D
403 Ben Hutton D
554 Kurtis MacDermid D
632 Joakim Ryan D
743 Mikey Anderson D
758 Paul LaDue D
859 Tobias Björnfot D
876 Kale Clague D
Я попробовал следующий код, чтобы выбрать «Joakim Ryan».
print(lakingsdefs_pos.loc[lakingsdefs_pos['playername'] == 'Joakim Ryan'])
К сожалению, не удалось выделить строку с ‘Joakim Ryan’ в ней.
С другой стороны, когда я попробовал то же самое с ‘position’, похоже, это сработало.
print(lakingsdefs_pos.loc[lakingsdefs_pos['position'] == 'D'])
Просто распечатайте весь список, как и должно быть.
Я надеюсь вывести что-то вроде следующего:
playername position
632 Joakim Ryan D
Ответ №1:
Давайте попробуем .str.contains()
метод;
lakingsdefs_pos[lakingsdefs_pos['playername'].str.contains('Joakim Ryan')]#If you only have the two columns
lakingsdefs_pos.loc[lakingsdefs_pos['playername'].str.contains('Joakim Ryan'),['playername','position']]#If you have other columns other than position and playername
playername position
632 Joakim Ryan D
Комментарии:
1. Спасибо. Первый — это в значительной степени то, что я хотел, но форматирование вывода отличается от формата вывода
print(lakingsdefs_pos.loc[lakingsdefs_pos['position'] == 'D'])
.2.
print(lakingsdefs_pos.loc[lakingsdefs_pos['playername'].str.contains('Joakim Ryan'),'playername'])
должен выводиться тот же формат. Ваша печать возвращает больше, чем серия. Они не могут быть одинаковыми. Итак, на ваш вопрос дан ответ?3.
print(lakingsdefs_pos.loc[lakingsdefs_pos['playername'].str.contains('Joakim Ryan'),'playername'])
выводит только его имя. Я надеялся вывести что-то, что я только что добавил к основному тексту.4. Мой первый ответ;
lakingsdefs_pos[lakingsdefs_pos['playername'].str.contains('Joakim Ryan')]
будет делать то же самое. Выходные данные будут отличаться, если у вас будет больше столбцов. У вас есть еще столбцы? Мы можем работать над этим5. Пожалуйста, посмотрите мои правки. Я включил опцию для случаев, когда у вас несколько столбцов.