我仍在学习Python,如果可能的话,我希望得到一些帮助。到目前为止,我已经收集了NBA球员的名字,但球员的位置附在数据上。
我有两个目标,我想在你的帮助下完成:
-
从名称数据中删除玩家位置
-
为玩家位置创建一个名为"位置"的新列
这是我迄今为止的代码:
import pandas as pd
url = 'https://www.espn.com/nba/team/stats/_/name/lal/season/2020/seasontype/2'
df = pd.read_html(url)
playerNames = df[0]
#edit to eliminate the '*' in the playerNames
playerNames['Name'] = playerNames['Name'].str.replace('*','')
以下是输出示例:
Name
Anthony Davis PF
Lebron James SF
Kyle Kuzma SF
...
这是我想要的输出:
Name Position
Anthony Davis PF
Lebron James SF
Kyle Kuzma SF
...
我在网上查找了哪种方法是最好的,我看到了以下方法:strip、replace、remove、regex等。我还没有遇到一个例子,它会在第二个空格后剥离所有数据。任何帮助都将不胜感激。提前感谢您提供的任何帮助
此外,如果可能的话,我宁愿不使用regex。我还没有开始学习这个方法,因为它看起来很混乱,有点草率。如果这是唯一的办法,我仍然会心存感激。谢谢
这是更新后的代码。。。仍在进行中:
import pandas as pd
url = 'https://www.espn.com/nba/team/stats/_/name/lal/season/2020/seasontype/2'
df = pd.read_html(url)
playerNames = df[0]
playerNames['Position'] = playerNames['Name'].apply(lambda x: x.split()[-1])
playerNames['Position'] = playerNames['Name'].apply(lambda x: " ".join(x.split()[:-1]))
playerNames['Position'] = playerNames['Name'].apply(lambda x: x.split()[-1])
playerNames['Name'] = playerNames['Name'].apply(lambda x: " ".join(x.split()[:-1]))