суммирование значений в pandas

#python #pandas

#python #pandas

Вопрос:

Существует фрейм данных pandas с двумя столбцами «ключ» и «значение». Я хочу, чтобы суммирование значений, соответствующих строкам с ключом в диапазоне (ключ-3, ключ-1), было помещено в новый столбец ‘new_value’ в исходном фрейме данных. например:

df:

 key  value
1     2
2     1
3     1
5     1
7     1
  

вывод будет:

 key value new_value
1   2     0
2   1     2
3   1     3
5   1     2
7   1     1
  

Комментарии:

1. Что вы пробовали до сих пор и не сработало ? Покажите нам свой код

Ответ №1:

Вы можете взглянуть на это :

 In [52]: df
Out[52]: 
   key  value
0    1      2
1    2      1
2    3      1
3    5      1
4    7      1

In [53]: df['new_value'] = df.apply(lambda x: df[(df['key'] >= x['key'] - 3) amp; (df['key'] <= x['key'] - 1)]['value'].sum(), axis=1)

In [54]: df
Out[54]: 
   key  value  new_value
0    1      2          0
1    2      1          2
2    3      1          3
3    5      1          2
4    7      1          1
  

Я использую apply для вычисления нового значения для каждой строки.

Комментарии:

1. что, если входные данные выглядят так: значение ключа 1 2 1 2 1 2 2 1 2 1 3 1 5 1 7 1 требуемый вывод: ключевое значение new_value 1 2 0 1 2 0 1 2 0 2 1 2 2 1 2 3 1 3 5 1 2 7 1 1

2. @starlord вам просто нужно поставить a drop_duplicates() перед sum() .