pandas.Series.truncate
- Series.truncate(before=None, after=None, axis=None, copy=None)[source]
-
Усечение Series или DataFrame до и после некоторого значения индекса.
Это полезное сокращение для булевой индексации на основе значений индекса выше или ниже определенных пороговых значений.
- Параметры:
-
- before:дата, строка, целое число
-
Усечение всех строк до этого значения индекса.
- after:дата, строка, целое число
-
Усечение всех строк после этого значения индекса.
- axis:{0 или ‘index’, 1 или ‘columns’}, необязательно
-
Ось для усечения. По умолчанию усекается индекс (строки). Для Series этот параметр не используется и по умолчанию равен 0.
- copy:bool, по умолчанию True,
-
Возвращает копию усечённого фрагмента.
Примечание
Ключевое слово copy изменит поведение в pandas 3.0. Copy-on-Write будет включено по умолчанию, что означает, что все методы с ключевым словом copy будут использовать механизм ленивой копии, чтобы отложить копирование и игнорировать ключевое слово copy. Ключевое слово copy будет удалено в будущей версии pandas.
Вы можете уже получить будущее поведение и улучшения, включив копирование при записи
pd.options.mode.copy_on_write = True
- Возвращает:
-
- тип вызываемого объекта
-
Усечённая Series или DataFrame.
См. также
DataFrame.loc-
Выбор подмножества DataFrame по метке.
DataFrame.iloc-
Выбор подмножества DataFrame по позиции.
Примечания
Если индекс, подлежащий усечению, содержит только значения datetime, before и after можно указать в виде строк вместо Timestamp.
Примеры
>>> df = pd.DataFrame({'A': ['a', 'b', 'c', 'd', 'e'], ... 'B': ['f', 'g', 'h', 'i', 'j'], ... 'C': ['k', 'l', 'm', 'n', 'o']}, ... index=[1, 2, 3, 4, 5]) >>> df A B C 1 a f k 2 b g l 3 c h m 4 d i n 5 e j o>>> df.truncate(before=2, after=4) A B C 2 b g l 3 c h m 4 d i n
Столбцы DataFrame можно усечь.
>>> df.truncate(before="A", after="B", axis="columns") A B 1 a f 2 b g 3 c h 4 d i 5 e j
Для Series можно усечь только строки.
>>> df['A'].truncate(before=2, after=4) 2 b 3 c 4 d Name: A, dtype: object
Значения индекса в
truncateмогут быть датами или строками дат.>>> dates = pd.date_range('2016-01-01', '2016-02-01', freq='s') >>> df = pd.DataFrame(index=dates, data={'A': 1}) >>> df.tail() A 2016-01-31 23:59:56 1 2016-01-31 23:59:57 1 2016-01-31 23:59:58 1 2016-01-31 23:59:59 1 2016-02-01 00:00:00 1>>> df.truncate(before=pd.Timestamp('2016-01-05'), ... after=pd.Timestamp('2016-01-10')).tail() A 2016-01-09 23:59:56 1 2016-01-09 23:59:57 1 2016-01-09 23:59:58 1 2016-01-09 23:59:59 1 2016-01-10 00:00:00 1Поскольку индекс — это DatetimeIndex, содержащий только даты, мы можем указать before и after в виде строк. Они будут приведены к Timestamp перед усечением.
>>> df.truncate('2016-01-05', '2016-01-10').tail() A 2016-01-09 23:59:56 1 2016-01-09 23:59:57 1 2016-01-09 23:59:58 1 2016-01-09 23:59:59 1 2016-01-10 00:00:00 1Обратите внимание, что
truncateпредполагает значение 0 для любого необъявленного компонента времени (полночь). Это отличается от частичного строкового среза, который возвращает любые частично соответствующие даты.>>> df.loc['2016-01-05':'2016-01-10', :].tail() A 2016-01-10 23:59:55 1 2016-01-10 23:59:56 1 2016-01-10 23:59:57 1 2016-01-10 23:59:58 1 2016-01-10 23:59:59 1
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.Series.truncate.html