2015-11-06 2 views
0

У меня есть Python панд DataFrame с (п, функция, класс)Как я могу суммировать значения столбцов, которые соответствуют конкретному значению другого столбца в pandas DataFrame?

item feature grade 
1 1  0.8 
1 2  0.3 
2 1  0.6 
... 

и я должен суммировать все значения ранга для каждого же элемента, так что, например

for item 1 sum of grade is 1.1 

и я должен поставить все суммы в новом DataFrame с (п, sumGrade):

item sumGrade 
1 1.1 
2 0.6 
... 

Как я могу сделать это без использования GroupBy и применить функцию? Потому что мне нужна хорошая производительность при вычислении.

Спасибо

+0

Нормальный op здесь, чтобы 'groupby' на 'item' и называть' sum' в столбце 'grade', не нужно называть 'apply' здесь – EdChum

ответ

1

Вы можете groupby на колонке «пункт» и затем вызвать sum на колонке «класс», дополнительно называют reset_index восстановить колонку «элемент» обратно:

In [10]: 
df.groupby(['item'])['grade'].sum().reset_index() 

Out[10]: 
    item grade 
0  1 1.1 
1  2 0.6 

Не уверен, почему вы не хотите группировать, но вы также можете установить индекс на «item» и sum на уровне индекса:

In [11]: 
df.set_index('item')['grade'].sum(level=0) 

Out[11]: 
item 
1 1.1 
2 0.6 
Name: grade, dtype: float64 
Смежные вопросы