Pandas: boolean Indizierung mit ungleichen Längen Serie
Gegeben zwei pandas Reihe von Objekten Ein und Spiele. Entspricht, enthält eine Teilmenge der Indizes von A und hat boolean-Einträge. Wie macht man das äquivalent der logischen Indizierung?
Wenn Spiele wurden in der gleichen Länge wie Ein, könnte man genauso verwenden:
A[Matches] = 5.*Matches
Mit Spiele kürzer erhält man:
error: Unalignable boolean Series key provided
Edit 1: Darstellung wie gewünscht
In [15]: A = pd.Series(range(10))
In [16]: A
Out[16]: 0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
In [17]: Matches = (A<3)[:5]
In [18]: Matches
Out[18]: 0 True
1 True
2 True
3 False
4 False
dtype: bool
In [19]: A[Matches] = None
---------------------------------------------------------------------------
IndexingError Traceback (most recent call last)
<ipython-input-19-7a04f32ce860> in <module>()
----> 1 A[Matches] = None
C:\Anaconda\lib\site-packages\pandas\core\series.py in __setitem__(self, key, value)
631
632 if _is_bool_indexer(key):
--> 633 key = _check_bool_indexer(self.index, key)
634 try:
635 self.where(~key, value, inplace=True)
C:\Anaconda\lib\site-packages\pandas\core\indexing.py in _check_bool_indexer(ax, key)
1379 mask = com.isnull(result.values)
1380 if mask.any():
-> 1381 raise IndexingError('Unalignable boolean Series key provided')
1382
1383 result = result.astype(bool).values
IndexingError: Unalignable boolean Series key provided
In [20]:
Dem Ergebnis bin ich auf der Suche nach ist:
In [16]: A
Out[16]: 0 None
1 None
2 None
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
Den Bau der Spiele-Serie ist künstlich und nur für Abbildung. Auch in meinem Fall Zeilen-Indizes sind offensichtlich nicht-numerische und nicht gleich element Werte...
Könnten Sie ein Beispiel geben input und output? Ich bin mir nicht ganz sicher, was Sie wollen.
Beispiel Hinzugefügt, in Frage zu stellen.
Beispiel Hinzugefügt, in Frage zu stellen.
InformationsquelleAutor ARF | 2014-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Naja, man kann nicht haben, was Sie wollen, weil
int64
ist nicht möglich, "dtype" für eine Serie mit Keine. Keiner ist nicht eine ganze Zahl ist. Aber Sie können nahe kommen:Das funktioniert, weil
Matches[Matches]
wählt die Elemente derMatches
die wahr sind.InformationsquelleAutor DSM