Pandas ist eine sehr nützliche Bibliothek, aber wenn sich die Version ändert, funktioniert das, was früher funktioniert hat, möglicherweise nicht. Dieses Mal werde ich zwei Punkte als Fall geben, wenn 0,24 ⇒ 1,0.
Erstens bei 0,24. Lassen Sie uns einen Datenrahmen erstellen, der aus den Spalten 'a' und 'b' besteht, und die Spalten mit ix angeben.
0.24
>>>a = pd.DataFrame([[1,2],[3,4]], index=[1,2], columns=['a', 'b'])
>>> a.ix[:, ['a','b']]
a b
1 1 2
2 3 4
Kann normal verwendet werden. Dann bei 1,0.
1.0
>>> a.ix[:, ['a','b']]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\ProgramData\Anaconda3\envs\padnas1\lib\site-packages\pandas\core\generic.py", l
ine 5273, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'ix'
Du kannst es nicht benutzen. Aber beeil dich nicht. Sie können loc anstelle von ix verwenden.
Geben wir nun einfach die nicht vorhandene Spalte 'c' an. Für 0,24.
0.24
>>> a.loc[:, ['a','c']]
a c
1 1 NaN
2 3 NaN
Es scheint automatisch eine Spalte zu erstellen und diese mit 'NaN' zu füllen. Bist du zu schlau?
Weiter in 1.0.
1.0
>>> a.loc[:, ['a','c']]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\ProgramData\Anaconda3\envs\padnas1\lib\site-packages\pandas\core\indexing.py",
line 1760, in __getitem__
return self._getitem_tuple(key)
File "C:\ProgramData\Anaconda3\envs\padnas1\lib\site-packages\pandas\core\indexing.py",
line 1287, in _getitem_tuple
retval = getattr(retval, self.name)._getitem_axis(key, axis=i)
File "C:\ProgramData\Anaconda3\envs\padnas1\lib\site-packages\pandas\core\indexing.py",
line 1952, in _getitem_axis
return self._getitem_iterable(key, axis=axis)
File "C:\ProgramData\Anaconda3\envs\padnas1\lib\site-packages\pandas\core\indexing.py",
line 1593, in _getitem_iterable
keyarr, indexer = self._get_listlike_indexer(key, axis, raise_missing=False)
File "C:\ProgramData\Anaconda3\envs\padnas1\lib\site-packages\pandas\core\indexing.py",
line 1550, in _get_listlike_indexer
self._validate_read_indexer(
File "C:\ProgramData\Anaconda3\envs\padnas1\lib\site-packages\pandas\core\indexing.py",
line 1652, in _validate_read_indexer
raise KeyError(
KeyError: 'Passing list-likes to .loc or [] with any missing labels is no longer supported
, see https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-
reindex-listlike'
Ein Schlüsselfehler ist aufgetreten. Dies kann dabei streng sein. Als Antwort scheint es besser, im Voraus zu prüfen, ob der Schlüssel in der Spalte vorhanden ist.
Dieses Mal habe ich zwei Beispiele vorgestellt, die zufällig gefunden wurden, aber es scheint, dass sich das Verhalten in vielen anderen Details geändert hat. Daher ist es besser, die Änderungen anhand der folgenden Punkte umfassend zu überprüfen. https://pandas.pydata.org/docs/whatsnew/v1.0.0.html
Recommended Posts