Как в pandas выбрать строки по колонке, содержащей список, заканчивающейся определённым значением?
У меня есть dataframe который содержит listlike столбец.
data = {'Маршрут': ['344с', '344', '1062'],
'Остановки': [('Ховрино', 'Совхозная'), ('Ховрино', 'Зеленая', 'Аптека', 'Левобережная', 'Совхозная'),
('Ховрино', 'Рио', 'Алтуфьево')]}
df = pd.DataFrame(data, columns =['Маршрут', 'Остановки'])
df
Нужно отобрать из него строки, по последнему элементу в этой колонке. Пробую так:
df[df['Остановки'][-1] == 'Совхозная']
Выходит ошибка:
ValueError Traceback (most recent call last)
C:\Anaconda3\lib\site-packages\pandas\core\indexes\range.py in get_loc(self, key, method, tolerance)
390 try:
--> 391 return self._range.index(new_key)
392 except ValueError as err:
ValueError: -1 is not in range
The above exception was the direct cause of the following exception:
KeyError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_22700/3020961214.py in <cell line: 6>()
4 df = pd.DataFrame(data, columns =['Маршрут', 'Остановки'])
5 df
----> 6 df[df['Остановки'][-1] == 'Совхозная']
C:\Anaconda3\lib\site-packages\pandas\core\series.py in __getitem__(self, key)
979
980 elif key_is_scalar:
--> 981 return self._get_value(key)
982
983 if is_hashable(key):
C:\Anaconda3\lib\site-packages\pandas\core\series.py in _get_value(self, label, takeable)
1087
1088 # Similar to Index.get_value, but we do not fall back to positional
-> 1089 loc = self.index.get_loc(label)
1090 return self.index._get_values_for_loc(self, loc, label)
1091
C:\Anaconda3\lib\site-packages\pandas\core\indexes\range.py in get_loc(self, key, method, tolerance)
391 return self._range.index(new_key)
392 except ValueError as err:
--> 393 raise KeyError(key) from err
394 self._check_indexing_error(key)
395 raise KeyError(key)
KeyError: -1
Источник: Stack Overflow на русском