Я только что запутался в этом: рассмотрим этот пример:
>>> import pandas as pd
>>>
df = pd.DataFrame({
"key":[1,3,6,10,15,21],
"columnA":[10,20,30,40,50,60],
"columnB":[100,200,300,400,500,600],
"columnC":[110,202,330,404,550,606],
})
>>> df
key columnA columnB columnC
0 1 10 100 110
1 3 20 200 202
2 6 30 300 330
3 10 40 400 404
4 15 50 500 550
5 21 60 600 606
Итак, я хочу извлечь данные из этой таблицы, где столбец key
(предположим, он растет монотонно) лежит между двумя значениями ( скажем, 2 и 15) - но только для некоторых определенных c столбцов (скажем, "columnA" и "column C". Надеюсь, это можно сделать в одну строку.
Теперь, если Я хочу использовать метод .between()
- он в основном возвращает истину / ложь для всех строк:
>>> df['key'].between(2, 16)
0 False
1 True
2 True
3 True
4 True
5 False
Итак, чтобы фактически извлечь эти строки, мне нужно поместить вышеуказанную команду в квадратные скобки:
>>> df[df['key'].between(2, 16)]
key columnA columnB columnC
1 3 20 200 202
2 6 30 300 330
3 10 40 400 404
4 15 50 500 550
Отлично, это то, что мне нужно - мне просто нужно ограничить столбцы, поэтому я попробую это:
>>> df[df['key'].between(2, 16), ["columnA"]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:/msys64/mingw64/lib/python3.8/site-packages/pandas/core/frame.py", line 2800, in __getitem__
indexer = self.columns.get_loc(key)
File "C:/msys64/mingw64/lib/python3.8/site-packages/pandas/core/indexes/base.py", line 2646, in get_loc
return self._engine.get_loc(key)
File "pandas/_libs/index.pyx", line 111, in pandas._libs.index.IndexEngine.get_loc
File "pandas/_libs/index.pyx", line 116, in pandas._libs.index.IndexEngine.get_loc
TypeError: '(0 False
1 True
2 True
3 True
4 True
5 False
Name: key, dtype: bool, ['columnA'])' is an invalid key
Э-э ... без кубиков.
Итак, как я могу сделать выше, и ограничить указанные c столбцы?