如何从 Pandas 中的 YYYY-YY 格式列中提取去年 (YYYY)

How to extract the last year (YYYY) from a YYYY-YY format column in Pandas

我正在尝试以 YYYY-YY 格式提取会计日期字符串的最后一年 (YY)。例如,这个“1999-00”的最后一年是 2000 年。

当前代码似乎涵盖了除此之外的大多数情况。

import pandas as pd
import numpy as np


test_df = pd.DataFrame(data={'Season':['1996-97', '1997-98', '1998-99', 
'1999-00', '2000-01', '2001-02',
'2002-03','2003-04','2004-05', 
'2005-06','2006-07','2007-08', 
'2008-09', '2009-10', '2010-11', '2011-12'],
'Height':np.random.randint(20, size=16), 
'Weight':np.random.randint(40, size=16)})

我需要一个逻辑来包括一个情况,如果是世纪末,那么我的应用方法应该添加到前两位数字,我相信这是我唯一遗漏的情况。

当前代码如下:

test_df['Season'] = test_df['Season'].apply(lambda x: x[0:2] + x[5:7])

给你!使用以下函数代替 lambda:

def get_season(string):
    century = int(string[:2])
    preyear = int(string[2:4])
    postyear = int(string[5:7])
    if postyear < preyear:
        century += 1
    # zfill is so that "1" becomes "01"
    return str(century).zfill(2) + str(postyear).zfill(2)

这应该也有效:

pd.to_numeric(test_df['Season'].str.split('-').str[0]) + 1

输出:

0     1997
1     1998
2     1999
3     2000
4     2001
5     2002
6     2003
7     2004
8     2005
9     2006
10    2007
11    2008
12    2009
13    2010
14    2011
15    2012

我使用 fiscalyear 模块。

import numpy as np
import pandas as pd
import fiscalyear as fy

...

test_df['Season'] = test_df['Season'].apply(lambda x : fy.FiscalYear(int(x[0:4]) + 1).fiscal_year)
print(test_df)

您可以使用.str.extract提取前四位数字

df['Season'] = df['Season'].str.extract('^(\d{4})').astype(int).add(1)
    Season  Height  Weight
0     1997       4      22
1     1998      18       4
2     1999      19      27
3     2000       7      10
4     2001      19       9
5     2002      18      31
6     2003      19       9
7     2004      18      29
8     2005      13      17
9     2006      13      30
10    2007       5      14
11    2008      15       3
12    2009      13      10
13    2010      15       8
14    2011       0      23
15    2012       2      38