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