我有两个带有重复索引的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
中处理这个问题以及这是否确实是预期的行为(即我应该总是期望相同的行为)?
编辑: 请注意,pandas根据索引进行元素总和,即:
>> pd.Series([1,2], index=['a', 'b']) + pd.Series([-1,-2], index=['b', 'a'])
a -1
b 1
答案 0 :(得分:1)
我认为当所有值都相同时,pandas会忽略索引。如果添加其他值,则会得到不同的结果:
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
上的所有可能匹配产生额外的行。
答案 1 :(得分:0)
基于@ othman-nejjar的评论
您可以使用:
pd.Series([1,2], index=['a', 'b']).add(pd.Series([-1,-2], index=['b', 'a']))
输出:
a -1
b 1
dtype: int64