Pandas .lo c не работает после использования регулярного выражения? - PullRequest
1 голос
/ 13 июля 2020

Вот мои данные:


player  pos avg
0   Antonio Brown   WR1 1.0
1   Julio Jones (11)    WR2 2.3
2   Odell Beckham Jr. (13)  WR3 2.8
3   Todd Gurley (11)    RB1 4.8
4   DeAndre Hopkins (9) WR4 5.8
... ... ... ...
546 Kai Forbath (7) K31 538.0
547 Cody Parkey K32 539.0
548 Wil Lutz (5)    K33 542.0
549 Andrew Franks   K34 543.0
550 Caleb Sturgis   K35 544.0

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

df['player'] = df['player'].str.replace(r"\(.*\)","")

Что дало мне то, что я хотел:


player  pos adp
0   Antonio Brown   WR1 1.0
1   Julio Jones WR2 2.3
2   Odell Beckham Jr.   WR3 2.8
3   Todd Gurley RB1 4.8
4   DeAndre Hopkins WR4 5.8
... ... ... ...
546 Kai Forbath K31 538.0
547 Cody Parkey K32 539.0
548 Wil Lutz    K33 542.0
549 Andrew Franks   K34 543.0
550 Caleb Sturgis   K35 544.0

Однако теперь, когда я использую .lo c, ничего не отображается!

df.loc[(df.player=='Julio Jones')]


player  pos adp pos_adp season

Но когда я использую .lo c в столбце, который изначально не был есть скобки, это работает:

df.loc[(df.player=='Antonio Brown')]

player  pos adp pos_adp season
0   Antonio Brown   WR1 1.0 1   2016

Это так неприятно, почему .lo c не работает, если я эффективно использовал регулярное выражение в столбцах?

1 Ответ

1 голос
/ 13 июля 2020

Я считаю, что "Julio Jones (11)" стал "Julio Jones ", а не "Julio Jones" после замены, потому что вы избавились от "(11)", а не " (11)". Я предлагаю вам использовать df.player.str.strip(), чтобы избавиться от конечных и ведущих пробелов.

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