Доступ по индексу, выборка и фильтрация
Доступ по индексу к объекту Series (obj[...]) работает так же, как для массивов NumPy, с тем отличием, что индексами могут быть не только целые, но и любые значения из индекса объекта Series. Вот несколько примеров:
In [117]: obj = pd.Series(np.arange(4.), index=['a', 'b', 'c', 'd'])
In [118]: obj
Out[118]:
a 0.0
b 1.0
c 2.0
d 3.0
dtype: float64
In [119]: obj['b']
Out[119]: 1.0
In [120]: obj[1]
Out[120]: 1.0
In [121]: obj[2:4]
Out[121]:
c 2.0
d 3.0
dtype: float64
In [122]: obj[['b', 'a', 'd']]
Out[122]:
b 1.0
a 0.0
d 3.0
dtype: float64
In [123]: obj[[1, 3]]
Out[123]:
b 1.0
d 3.0
dtype: float64
In [124]: obj[obj < 2]
Out[124]:
a 0.0
b 1.0
dtype: float64
Вырезание с помощью меток отличается от обычного вырезания в Python тем, что конечная точка включается:
In [125]: obj['b':'c']
Out[125]:
b 1.0
c 2.0
dtype: float64
Установка с помощью этих методов модифицирует соответствующий участок Series:
In [126]: obj['b':'c'] = 5
In [127]: obj
Out[127]:
a 0.0
b 5.0
c 5.0
d 3.0
dtype: float64
Обращение по индексу к DataFrame предназначено для получения одного или нескольких столбцов путем задания одного значения или последовательности:
In [128]: data = pd.DataFrame(np.arange(16).reshape((4, 4)),
.....: index=['Ohio', 'Colorado', 'Utah', 'New York'],
.....: columns=['one', 'two', 'three', 'four'])
In [129]: data
Out[129]:
one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
In [130]: data['two']
Out[130]:
Ohio 1
Colorado 5
Utah 9
New York 13
Name: two, dtype: int64
In [131]: data[['three', 'one']]
Out[131]:
three one
Ohio 2 0
Colorado 6 4
rUtah 10 8
New York 14 12
У доступа по индексу есть несколько частных случаев. Во-первых, выборка или вырезание данных с помощью булева массива:
In [132]: data[:2]
Out[132]:
one two three four
Ohio 0 1 2 3
Colorado 4 5 6 7
In [133]: data[data['three'] > 5]
Out[133]:
one two three four
Colorado 4 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
Для удобства предоставляется специальный синтаксис выборки строк data[:2]. Если передать один элемент или список оператору [], то выбираются столбцы.
Еще одна возможность – доступ по индексу с помощью булева DataFrame, например, порожденного в результате скалярного сравнения:
In [134]: data < 5
Out[134]:
one two three four
Ohio True True True True
Colorado True False False False
Utah False False False False
New York False False False False
In [135]: data[data < 5] = 0
In [136]: data
Out[136]:
one two three four
Ohio 0 0 0 0
Colorado 0 5 6 7
Utah 8 9 10 11
New York 12 13 14 15
Это делает DataFrame синтаксически более похожим на ndarray в данном частном случае.
Достарыңызбен бөлісу: |