Метод суммы панд DataFrame работает нелогично - PullRequest
0 голосов
/ 02 июня 2018
my_df = DataFrame(np.arange(1,13).reshape(4,3), columns=list('abc'))

my_df.sum(axis="rows")   

O / P равно

a 22 * ​​1004 *

b 26

c 30

// Я ожидаю, что сумма будет суммироваться по строкамдавая

0 6

1 15

2 24

3 33

my_df.sum(axis="columns") //helps achieve this

Почему это работает противоинтуитивно?В аналогичном контексте метод отбрасывания работает как следует, т.е. когда я пишу

my_df.drop(['a'],axis="columns") 

// Это отбрасывает столбец "a".

Я что-то упустил?Пожалуйста, просветите.

1 Ответ

0 голосов
/ 02 июня 2018

Короткая версия

Это соглашение об именах.Сумма столбцов дает построчную сумму.Вы ищете axis='columns').


Длинная версия

Хорошо, это было интересно.В пандах обычно 0 для столбцов и 1 для строк.Однако, взглянув на документы , мы обнаружим, что разрешенными параметрами являются:

ось: {индекс (0), столбцы (1)}

Вы передаете несуществующий параметр, который приводит к значению по умолчанию.Таким образом, это может быть прочитано как: Сумма столбцов возвращает сумму строки.Сумма индекса возвращает сумму столбца.То, что вы хотите использовать axis=1 или axis='columns', что приводит к желаемому результату:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.arange(1,13).reshape(4,3), columns=list('abc'))

print(df.sum(axis=1))

Возвращает:

0     6
1    15
2    24
3    33
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...