我假设np.where()的数量是问题所在,因为去掉1将允许函数工作。我不知道除了if else之外还有其他方法来编辑名称。我想这会更快。我也想到了映射,但我不确定如何返回没有更改的名称。任何帮助理解这个期望结果的最佳实践的人都会非常感激!
# Takes names from various dataframes and websites and makes one name outcome
#
def player_name_filter(name):
name = name.str.title().str.replace('.', ' ', regex=True).str.strip()
name = np.where(name=='A J Greer','A.J. Greer',
np.where(name=='Alexis Lafreni?Re','Alexis Lafreniere',
np.where(name=='Alexis Lafrenière','Alexis Lafreniere',
np.where(name=='Alexandre Carrier', 'Alex Carrier',
np.where(name=='Alexander Burmistrov', 'Alex Burmistrov',
np.where(name=='Alexander Petrovic', 'Alex Petrovic',
np.where(name=='Alexander Edler', 'Alex Edler',
np.where(name=='Alexander Kerfoot', 'Alex Kerfoot',
np.where(name=='Alexander Nylander', 'Alex Nylander',
np.where(name=='Alexander Radulov', 'Alex Radulov',
np.where(name=='Alexander Steen', 'Alex Steen',
np.where(name=='Alexandre Texier', 'Alex Texier',
np.where(name=='Alexander Volkov', 'Alex Volkov',
np.where(name=='Alexander Wennberg', 'Alex Wennberg',
np.where(name=='Aaron Volpatt', 'Aaron Volpatti',
np.where(name=='Adam Cracknel', 'Adam Cracknell',
np.where(name=='Anze Kopitar', 'GOAT',
np.where(name=='B J Crombeen', 'B.J. Crombeen',
np.where(name=='C J Smith', 'C.J. Smith',
np.where(name=='Christopher Tanev', 'Chris Tanev',
np.where(name=='Colin White', 'Colin White2',
np.where(name=='Charlie Mcavoy', 'Charlie McAvoy',
np.where(name=='Casey Desmith', 'Casey DeSmith',
np.where(name=='Cal Petersen', 'Calvin Petersen',
np.where(name=='Calvin De Haan', 'Calvin de Haan',
np.where(name=='Cj Suess', 'C.J. Suess',
np.where(name=='Dj King', 'D.J. King',
np.where(name=='Erik Gustafsson', 'Erik Gustafsson2',
np.where(name=='Evgenii Dadonov', 'Evgeny Dadonov',
np.where(name=='Jake McCabe', 'Jake McCabe',
np.where(name=='Jacob Macdonald', 'Jacob MacDonald',
np.where(name=='Jacob de la Rose', 'Jacob De La Rose',
np.where(name=='Jean-Francois Berube', 'J-F Berube',
np.where(name=='Joseph Labate', 'Joseph LaBate',
np.where(name=='J T Brown', 'J.T. Brown',
np.where(name=='J T Compher', 'J.T. Compher',
np.where(name=='J C Beaudin', 'J.C. Beaudin',
np.where(name=='J T Miller', 'J.T. Miller',
np.where(name=='Jc Lipon', 'J.C. Lipon',
np.where(name=='Jt Wyman', 'J.T. Wyman',
np.where(name=='Martin St Louis', 'Martin St. Louis',
np.where(name=='Matthew Benning', 'Matt Benning',
np.where(name=='Maxime Comtois', 'Max Comtois',
np.where(name=='Max VÃf©ronneau', 'Max Veronneau',
np.where(name=='Max Lajoie', 'Maxime Lajoie',
np.where(name=='Michael Matheson', 'Mike Matheson',
np.where(name=='Mikhail Vorobyov', 'Mikhail Vorobyev',
np.where(name=='Mitchell Marner', 'Mitch Marner',
np.where(name=='Nicholas Caamano', 'Nick Caamano',
np.where(name=='Nicholas Suzuki', 'Nick Suzuki',
np.where(name=='P A Parenteau', 'P.A. Parenteau',
np.where(name=='P J Axelsson', 'P.J. Axelsson',
np.where(name=='P K Subban', 'P.K. Subban',
np.where(name=='R J Umberger', 'R.J. Umberger',
np.where(name=='Samuel Blais', 'Sammy Blais',
np.where(name=='Steve Santini', 'Steven Santini',
np.where(name=='Theodor Blueger', 'Teddy Blueger',
np.where(name=='Tim Gettinger', 'Timothy Gettinger',
np.where(name=='Tj Brodie', 'T.J. Brodie',
np.where(name=='Tj Brennan', 'T.J. Brennan',
np.where(name=='T J Brennan', 'T.J. Brennan',
np.where(name=='Tj Tynan', 'T.J. Tynan',
np.where(name=='T J Galiardi', 'T.J. Galiardi',
np.where(name=='T J Hensick', 'T.J. Hensick',
np.where(name=='T J Oshie', 'T.J. Oshie',
np.where(name=='Tony Deangelo', 'Tony DeAngelo',
np.where(name=='Anthony Deangelo', 'Tony DeAngelo',
np.where(name=='Vincent Hinostroza', 'Vinnie Hinostroza',
np.where(name=='Vitali Abramov', 'Vitaly Abramov',
np.where(name=="Logan O'Connor", "Logan O'Connor",
np.where(name=='Kurtis MacDermid', 'Kurtis MacDermid',
np.where(name=='Zachary Senyshyn', 'Zach Senyshyn',
np.where(name=='Christopher DiDomenico', 'Chris DiDomenico',
np.where(name=='Michael Cammalleri', 'Mike Cammalleri',
np.where(name=='Nicholas Shore', 'Nick Shore',
np.where(name=='Pat Maroon', 'Patrick Maroon',
np.where(name=='Ryan Macinnis', 'Ryan MacInnis',
np.where(name=='Tony Deangelo', 'Tony DeAngelo',
np.where(name=='Mackenzie Maceachern', 'Mackenzie MacEachern',
np.where(name=='Alex Debrincat', 'Alex DeBrincat',
np.where(name=='Samuel Montembeault', 'Sam Montembeault',
np.where(name=='Danny Taylor', 'Daniel Taylor',
np.where(name=='Pierre-Alexandr Parenteau', 'PA Parenteau',
np.where(name=='Christian Wolanin', 'Christian Wolanin',
np.where(name=="Dylan Sikura ", "Dylan Sikura",
np.where(name=='Troy Terry ', 'Troy Terry',
np.where(name=='Viktor Antipin', 'Victor Antipin',
np.where(name=='Zach Aston-reese', 'Zach Aston-Reese',
np.where(name=='Max Lagace', 'Maxime Lagace',
name)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
return name发布于 2021-03-20 20:02:09
当您处理两个以上的选择时,请使用np.select。
conditions = [df['name'] == 'A J Greer', df['name'] == 'Alexis Lafrenière', ...]
choices = ['A.J. Greer', 'Alexis Lafreniere', ...]
df.select(conditions, choices, default = df.name)您还可以将字典用作查找表
name_table = {
'A J Greer': 'A.J. Greer',
'Alexis Lafrenière': 'Alexis Lafreniere',
'B J Crombeen': 'B.J. Crombeen',
# and so on
}
df['name'].str.title().apply(lambda x: name_table.get(x, x))
# or
def player_name_filter(dataf , column_name):
dataf[column_name] = dataf[column_name].str.title().map(name_table)
return dataf
df = df.pipe(player_name_filter, column_name='name')
# problem NaN for players not in the tables https://stackoverflow.com/questions/66721197
复制相似问题