Выборочное добавление значений столбцов в фрейм данных

#python #pandas #dataframe #dictionary

#python #pandas #фрейм данных #словарь

Вопрос:

У меня есть фрейм данных pandas, подобный этому

 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’ и создать новый столбец с суммой всех значений. Как мне поступить?

Ответ №1:

 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
  

Ответ №2:

Используется 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