问题
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