Python 在数据帧中选择性地添加列的值

Python 在数据帧中选择性地添加列的值,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,我有一个像这样的熊猫数据框 YEAR_OPENED 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 1999 1 0 0 0 1 0 0 0 1 0 2000 1 1 2 0 3 0 0 0 0 0 2001 0 0 0 4 0 0 0

我有一个像这样的熊猫数据框

YEAR_OPENED  2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
 1999          1    0    0   0    1    0     0   0     1    0
 2000          1    1    2   0    3    0     0   0     0    0
 2001          0    0    0   4    0    0     0   0     0    0
我想添加给定列中的所有值,如下所示:

YEAR_OPENED   CLOSED_IN_5_YEARS
 1999               2
 2000               7
 2001               4

因此,基本上我想检查列名称是否在“year_OPENED”列中相应值的五年范围内,并创建一个包含所有值总和的新列。如何继续?

使用
iloc
选择基于变量
n
的特定列,以及带有第一列的
concat

n=5
df['CLOSED_IN_5_YEARS'] = df.iloc[:,1:n+1].sum(axis=1)
df=pd.concat([df.iloc[:,0],df.iloc[:,-1]], axis=1)
df
Out[1]: 
   YEAR_OPENED  CLOSED_IN_5_YEARS
0         1999                  2
1         2000                  7
2         2001                  4
df['CLOSED_IN_5_YEARS'] = df.set_index('YEAR_OPENED').apply(
        lambda x: sum(i for i, c in zip(x, x.index) if x.name <= int(c) <= x.name + 5), axis=1
    ).values

print(df)
   YEAR_OPENED  2000  2001  2002  ...  2007  2008  2009  CLOSED_IN_5_YEARS
0         1999     1     0     0  ...     0     1     0                  2
1         2000     1     1     2  ...     0     0     0                  7
2         2001     0     0     0  ...     0     0     0                  4