2016-08-16 2 views
2

У меня есть DataFrame как такКак правильно использовать str.replace() с панды DataFrame

   Year  Player 
46 Jan. 17, 1971 Chuck Howley 
47 Jan. 11, 1970 Len Dawson 
48 Jan. 12, 1969 Joe Namath 
49 Jan. 14, 1968 Bart Starr 
50 Jan. 15, 1967 Bart Starr 

и я хочу только год, чтобы заполнить df_MVPs['Year']. Мой текущий метод:

df_MVPs['Year'] = df_MVPs['Year'].str.replace(df_MVPs['Year'][:7], '') 

но это вызывает ошибку. Есть ли способ сделать это проще?

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

Year  Player 
46 1971 Chuck Howley 
47 1970 Len Dawson 
48 1969 Joe Namath 
49 1968 Bart Starr 
50 1967 Bart Starr 

ответ

1

Я хотел бы использовать метод .str.extract() вместо:

In [10]: df 
Out[10]: 
      Year  Player 
46 Jan. 17, 1971 Chuck Howley 
47 Jan. 11, 1970 Len Dawson 
48 Jan. 12, 1969 Joe Namath 
49 Jan. 14, 1968 Bart Starr 
50 Jan. 15, 1967 Bart Starr 

In [11]: df.Year.str.extract('.*(\d{4})$', expand=True) 
Out[11]: 
     0 
46 1971 
47 1970 
48 1969 
49 1968 
50 1967 

, но вы также можете использовать .str.replace():

In [13]: df.Year.str.replace('.*(\d{4})$', r'\1') 
Out[13]: 
46 1971 
47 1970 
48 1969 
49 1968 
50 1967 
Name: Year, dtype: object 

Here is a link который объясняет .*(\d{4})$ RegEx (Regular Expresiion)

+0

Можете ли вы указать, где я могу узнать, что такое «.» (\ D {4}) $ ', "означает? Я новичок в pandas/python – Mark

+0

@Mark, я добавил ссылку на 'regex101.com', которая анализирует и объясняет выражения RegEx ... – MaxU

6

Aw человек, преобразовать в DateTime затем получить год:

df_MVPs['Year'] = pd.to_datetime(df_MVPs['Year'], format='%b. %d, %Y').dt.year 
2

Вы можете взять последние четыре символа строки:

df_MVPs['Year'] = df_MVPs['Year'].str[-4:] 

>>> df_MVPs 
    Year  Player 
46 1971 Chuck Howley 
47 1970 Len Dawson 
48 1969 Joe Namath 
49 1968 Bart Starr 
50 1967 Bart Starr 
Смежные вопросы