Figlio dell’ex lanciatore Tom Walker, Neil Walker frequentò la Pine-Richland high school di Gibsonia. Da lì venne selezionato nel primo turno, come 11ª scelta assoluta durante il draft amatoriale MLB 2004 dai Pittsburgh Pirates, squadra della sua città natale. Iniziò a giocare nello stesso anno con il ruolo di ricevitore nella classe Rookie e dal 28 agosto nella classe A-breve, finendo in quest'ultima l'annata d'esordio con ,313 di media battuta e 7 RBI in 8 partite. Iniziò la stagione 2005 nella classe A e venne promosso il 26 agosto nella classe A-avanzata.
Il 15 agosto del 2006, venne promosso nella Doppia-A. La stagione 2006 fu anche l'ultima di Walker nel ruolo di ricevitore poiché dallo spring training del 2007 trascorso con i Pirates, venne adattato al ruolo di terza base.
Dopo una trafila lunga quasi quattro anni, il 17 agosto 2007 debuttò nella Tripla-A con gli Indianapolis Indians. Trascorse a Indianapolis per intero la stagione 2008 e anche gran parte della stagione 2009, durante la quale fece registrare una media battuta di ,256, 15 fuoricampo, 70 RBI e 40 punti in 103 partite.
Tornò in Minor League per brevi periodi anche negli anni successivi, perlopiù in fase di riabilitazione: nel 2010 (43 partite, .321 alla battuta), nel 2013 (7 partite, ,333 alla battuta), nel 2014 (1 partita, ,250 alla battuta) e nel 2017 (5 partite, ,263 alla battuta).
Major League (MLB)
Pittsburgh Pirates (2009-2015)
Walker debuttò nella MLB il 1º settembre 2009 al Great American Ball Park di Cincinnati, contro i Cincinnati Reds. Schierato come sostituto battitore (al posto del lanciatore) nella parte alta del sesto inning, colpì una palla a terra venendo eliminato. Non partecipò ad altri turni durante la partita. Il 6 settembre contro i Cardinals, nella parte bassa del sesto inning ottenne la sua prima base su ball e segnò il primo punto, mentre nella parte bassa dell'ottavo, colpì la sua prima valida. Chiuse la sua prima stagione con .194 alla battuta e 5 punti in 17 partite disputate nella MLB, a fronte delle 103 disputate nella minor league suddivise in 95 nella Tripla-A e 8 nella classe Rookie.
Il 25 maggio 2010 contro i Reds, colpì un doppio, ottenendo il primo punto battuto a casa. Il 1º giugno contro i Cubs, batté come suo primo fuoricampo, un home run da due punti. Inoltre in questa stagione, venne spostato dalla terza alla seconda base e si mise in mostra con ottime statistiche: ,296 alla battuta, 12 fuoricampo, 66 RBI, 2 basi rubate e 57 punti in 110 partite.
Nel 2011, confermò le sue buone prestazioni con ,273 alla battuta, 12 fuoricampo, 83 RBI, 9 basi rubate e 76 punti in 159 partite (quinto per presenze nella National League).
Nel 2012 concluse la stagione con ,280 alla battuta, 14 fuoricampo, 69 RBI, 7 basi rubate e 62 punti in 129 partite.
Il 31 gennaio 2013, rinnovò con un contratto da 3,3 milioni di dollari. Durante la stagione subì un paio di infortuni e trascorse due periodi di riabilitazione in Doppia-A (con gli Altoona Curve) e in Tripla-A (con gli Indianapolis Indians). Per la prima volta però raggiunse i playoff in Major League, arrivando fino alle Division Series, quando i Pirates vennero sconfitti dai St. Louis Cardinals. Chiuse la stagione in MLB con .251 alla battuta, 16 fuoricampo, 53 RBI, 1 base rubata e 62 punti in 133 partite.
Il 17 gennaio 2014 firmò per 5,75 milioni di dollari. Con i Pirates arrivò fino allo spareggio per la wild-card, perso contro i San Francisco Giants, destinati poi a vincere le World Series. Walker si consolò con il Silver Slugger Award, assegnatogli come miglior seconda base della National League in quanto a rendimento offensivo. Terminò la stagione con ,271 alla battuta, 23 fuoricampo, 76 RBI, 2 basi rubate e 74 punti in 137 partite.
Il 7 febbraio 2015 firmò, per 8 milioni di dollari, l'ultimo contratto con i Pirates prima di diventare free agent. Chiuse con ,269 alla battuta, 16 fuoricampo, 71 RBI, 4 basi rubate e 69 punti in 151 partite. Il 9 dicembre, venne scambiato con i New York Mets per il lanciatore mancino Jon Niese.
New York Mets e Milwaukee Brewers (2016-2017)
Il 29 gennaio 2016 firmò un contratto annuale per 10,55 milioni di dollari. Il 26 agosto, venne inserito nella lista infortunati e chiuse in anticipo la stagione con ,282 alla battuta, 23 fuoricampo, 55 RBI, 3 basi rubate e 57 punti in 113 partite. Il 14 novembre firmò un nuovo contratto annuale per 17,2 milioni di dollari.
Nella stagione 2017 giocò con i Mets 73 partite, saltando un mese e mezzo di campionato per un infortunio alla coscia. Con la maglia dei Mets, fece registrare una media battuta di ,264, 10 fuoricampo, 36 RBI e 40 punti.
Con la squadra ormai tagliata fuori dalla lotta per i playoff, e ormai prossimo a diventare free agent, il 12 agosto venne scambiato con i Milwaukee Brewers, per una somma in denaro e un giocatore da definire.[1]
Debuttò con i Brewers domenica 13 agosto 2017 al Miller Park di Milwaukee, nella partita vinta per 7-4 sui Cincinnati Reds.[2] Divenne free agent a stagione ultimata.
Il 29 gennaio 2019, Walker firmò un contratto annuale del valore di 2 milioni con i Miami Marlins.[4] In questa stagione venne schierato come prima base e terza base. Divenne free agent a stagione conclusa.
Philadelphia Phillies e ritiro (2020-2021)
Il 22 gennaio 2020, Walker firmò un contratto di minor league con i Philadelphia Phillies. Il 13 agosto contro gli Orioles in situazione di netto svantaggio, giocò la prima partita nel ruolo di lanciatore, venendo schierato come closer. Concesse una base su ball e non concesse valide.[5] Venne designato per la riassegnazione l'11 settembre e divenne free agent il 14 settembre. Il 20 aprile 2021, Walker annunciò il ritiro dal baseball professionistico.[6]