Was passiert, wenn Sie vergleichen 2 pandas Serie
Lief ich gegen unerwartetes Verhalten in pandas beim Vergleich der beiden Serien. Ich wollte wissen, ob dies beabsichtigt ist oder ein bug.
vermute ich:
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
ergibt:
a True
b False
c True
d False
e False
f False
Name: Value, dtype: bool
das ist nicht das, was ich wollte. Klar, ich erwartet, dass die Indizes zum line-up. Aber ich habe explizit diese Zeile, bis die gewünschten Ergebnisse zu erhalten.
x > y.reindex_like(x)
ergibt:
a True
b True
c True
d False
e False
f False
Name: Value, dtype: bool
Das ist, was ich erwartet hatte.
Was noch schlimmer ist, ist wenn ich:
x + y
Bekomme ich:
a 1
b 1
c 1
d 2
e 2
f 2
Name: Value, dtype: int64
So, wenn der Betrieb, die Indizes line-up. Beim Vergleich, das tun Sie nicht. Ist meine Beobachtung korrekt? Ist das Absicht für einen bestimmten Zweck?
Dank,
-PiR
- Ja, das fühlt sich nicht richtig an alle.
- Es gibt hier ein Thema dazu: github.com/pydata/pandas/issues/1134, und eine geschlossene PR (github.com/pydata/pandas/pull/6860)
- Wie es aussieht hat ausgedrückt werden als
(x-y)>0
stattx>y
haben die Elemente ausgerichtet, bis dann... - nette Kommentare zu: github.com/pydata/pandas/issues/1134. Lesen Sie sich besonders snth Kommentar: "irgendwann habe ich die Dokumentation um zu sehen, ob mein Verständnis der index die Ausrichtung war korrekt und es wurde nicht erwähnt wird dort, dass dies nur für die +, -, *, / Operatoren und nicht mit ==, !=, <, <=, >, >=."
- kann nicht scheinen, um der Reihe != Serie, produziert nicht die richtigen Werte. pandas-version '0.23.4'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bug ist oder nicht. Ich würde vorschlagen, um ein dataframe und vergleichen Sie die Serie innerhalb der dataframe.
df=pd.concat([x,y], axis=1)
.pd.concat
ist sehr viel die standard-idiom in Pandas.