What happens when you compare 2 pandas Series

非 Y 不嫁゛ 提交于 2019-12-19 05:04:06

问题


I ran up against unexpected behavior in pandas when comparing two series. I wanted to know if this is intended or a bug.

suppose I:

import pandas as pd
x = pd.Series([1, 1, 1, 0, 0, 0], index=['a', 'b', 'c', 'd', 'e', 'f'], name='Value')
y = pd.Series([0, 2, 0, 2, 0, 2], index=['c', 'f', 'a', 'e', 'b', 'd'], name='Value')

x > y

yields:

a     True
b    False
c     True
d    False
e    False
f    False
Name: Value, dtype: bool

which isn't what I wanted. Clearly, I expected the indexes to line up. But I have to explicitly line them up to get the desired results.

x > y.reindex_like(x)

yields:

a     True
b     True
c     True
d    False
e    False
f    False
Name: Value, dtype: bool

Which is what I expected.

What's worse is if I:

x + y

I get:

a    1
b    1
c    1
d    2
e    2
f    2
Name: Value, dtype: int64

So when operating, the indexes line up. When comparing, they do not. Is my observation accurate? Is this intended for some purpose?

Thanks,

-PiR


回答1:


Bug or not. I would suggest to make a dataframe and compare the series inside the dataframe.

import pandas as pd
x = pd.Series([1, 1, 1, 0, 0, 0], index=['a', 'b', 'c', 'd', 'e', 'f'], name='Value_x')
y = pd.Series([0, 2, 0, 2, 0, 2], index=['c', 'f', 'a', 'e', 'b', 'd'], name='Value_y')

df = pd.DataFrame({"Value_x":x, "Value_y":y})
df['Value_x'] > df['Value_y']

Out[3]:

a     True
b     True
c     True
d    False
e    False
f    False
dtype: bool


来源:https://stackoverflow.com/questions/25435229/what-happens-when-you-compare-2-pandas-series

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!