Pandas如何处理重复索引?

2024-04-26 20:25:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个带有重复索引的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

Tags: in元素编辑pandasforindex顺序range
2条回答

我认为当所有值都相同时,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

重复索引会导致xy'a'上所有可能匹配项的附加行。你知道吗

基于@othman nejjar的评论

您可以使用:

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

输出:

a   -1
b    1
dtype: int64

相关问题 更多 >