2016-06-29 6 views
1

Я пытаюсь научиться работать с файловыми кадрами pandas. В моей DataFrame есть 4 столбца A, B, C, D.Python: сумма данных данных Pandas

Для индекса (A, B, C), существует несколько значений D. я хочу объединить эти строки и суммировать значения в D.

у меня есть:

╔═══╦═══╦═══╦═══╦═══╗ 
║ ║ A ║ B ║ C ║ D ║ 
╠═══╬═══╬═══╬═══╬═══╣ 
║ 1 ║ 1 ║ 2 ║ 3 ║ 5 ║ 
║ 1 ║ 1 ║ 2 ║ 3 ║ 3 ║ 
║ 2 ║ 1 ║ 5 ║ 4 ║ 2 ║ 
║ 2 ║ 1 ║ 2 ║ 4 ║ 2 ║ 
║ 3 ║ 1 ║ 2 ║ 4 ║ 2 ║ 
║ 3 ║ 1 ║ 2 ║ 4 ║ 3 ║ 
╚═══╩═══╩═══╩═══╩═══╝ 

Хочу чтобы получить:

╔═══╦═══╦═══╦═══╦═══╗ 
║ ║ A ║ B ║ C ║ D ║ 
╠═══╬═══╬═══╬═══╬═══╣ 
║ 1 ║ 1 ║ 2 ║ 3 ║ 8 ║ 
║ 2 ║ 1 ║ 5 ║ 4 ║ 2 ║ 
║ 2 ║ 1 ║ 2 ║ 4 ║ 2 ║ 
║ 3 ║ 1 ║ 2 ║ 4 ║ 5 ║ 
╚═══╩═══╩═══╩═══╩═══╝ 

Я пытался сделать это таким образом:

df=df.groupby(['A','B','C'])['D'].sum()

Но вместо этого он дает мне серию.

+1

так вы желая 'ДФ = df.groupby ([ 'A', 'B ',' C ']) [' D ']. Sum(). Reset_index() 'или' df = df.groupby ([' A ',' B ',' C '], as_index = False) [' D '] .sum() ' – EdChum

+0

Да, это работает :) вы можете ответить на него, и я буду отмечать его как решенный – SpeedEX505

ответ

1

Если вы хотите сохранить столбцы после groupby можно назвать reset_index:

In [185]: 
df.groupby(['A','B','C'])['D'].sum().reset_index() 

Out[185]: 
    A B C D 
0 1 2 3 8 
1 1 2 4 7 
2 1 5 4 2 

или передать аргумент as_index=False

Смежные вопросы