Как панды обрабатывают дубликат индекса? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть два pandas.Series с дублирующимися индексами, что-то вроде этого:

>> x = pandas.Series(range(5,10), index = ['a' for _ in xrange(5)])
>> y = pandas.Series(range(-5,-10, -1), index = ['a' for _ in xrange(5)])

, которые выглядят так

      x  y
   a  5 -5
   a  6 -6
   a  7 -7
   a  8 -8
   a  9 -9

Затем при выполнении x+y я получаю pandas.Series из 0.Кажется, что он следует порядку вместо индекса, который может или не может быть предполагаемым поведением.

Любая идея о том, как это обрабатывается в pandas и действительно ли это предполагаемое поведение (то есть явсегда следует ожидать одинакового поведения)?

РЕДАКТИРОВАТЬ: Обратите внимание, что панды делают поэлементную сумму в соответствии с индексом, то есть:

>> pd.Series([1,2], index=['a', 'b']) + pd.Series([-1,-2], index=['b', 'a'])
a   -1
b    1

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

На основе комментария @ othman-nejjar

Вы можете использовать:

pd.Series([1,2], index=['a', 'b']).add(pd.Series([-1,-2], index=['b', 'a']))

Вывод:

a   -1
b    1
dtype: int64
0 голосов
/ 30 мая 2018

Я думаю, что панды игнорируют индекс, когда все значения одинаковы.Если вы добавите другое значение, вы получите другой результат:

x = pd.Series(range(5,10), index = ['a' for _ in range(4)]+['b'])
y = pd.Series(range(-5,-10, -1), index = ['b']+['a' for _ in range(4)])

с

x

a    5
a    6
a    7
a    8
b    9

и

y

b   -5
a   -6
a   -7
a   -8
a   -9

Теперь вы получите следующий результат:

x+y

a   -1
a   -2
a   -3
a   -4
a    0
a   -1
a   -2
a   -3
a    1
a    0
a   -1
a   -2
a    2
a    1
a    0
a   -1
b    4

Дублированные индексы приводят к появлению дополнительных строк для всех возможных совпадений на 'a' в x и y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...