#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()
.