Spec-Zone.ru › pandas 2

pandas.DataFrame.truncate

DataFrame.truncate(before=None, after=None, axis=None, copy=None)[source]

Обрезка Series или DataFrame до и после некоторого значения индекса.

Это удобный способ для булевой индексации на основе значений индексов выше или ниже определённых пороговых значений.

Параметры:
before:дата, строка, целое число

Обрезать все строки до этого значения индекса.

after:дата, строка, целое число

Обрезать все строки после этого значения индекса.

axis:{0 или ‘индекс’, 1 или ‘колонки’}, необязательно

Ось для обрезки. По умолчанию обрезает индекс (строки). Для Series этот параметр игнорируется и по умолчанию равен 0.

copy:булево, значение по умолчанию 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 по позиции.

Примечания

Если индекс, который обрезается, содержит только значения дат, before и after можно указать в виде строк вместо Timestamps.

Примеры

>>> 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 в виде строк. Они будут преобразованны в Timestamps перед обрезкой.

>>> 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.DataFrame.truncate.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API