如何正确使用结构更换()数据帧

2024-10-01 07:22:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的数据帧

             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], '')

但这会导致错误发生。有没有更简单的方法?你知道吗

编辑: 我希望我的数据帧看起来像:

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

Tags: 数据方法dflenyearjanplayerjoe
3条回答

哦,伙计,转换成日期时间然后得到年份:

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

可以使用字符串的最后四个字符:

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

我会改用.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(正则表达式)

相关问题 更多 >