pandas.Series.truncate — pandas 2.2.3 documentation (original) (raw)
Series.truncate(before=None, after=None, axis=None, copy=None)[source]#
Truncate a Series or DataFrame before and after some index value.
This is a useful shorthand for boolean indexing based on index values above or below certain thresholds.
Parameters:
beforedate, str, int
Truncate all rows before this index value.
afterdate, str, int
Truncate all rows after this index value.
axis{0 or ‘index’, 1 or ‘columns’}, optional
Axis to truncate. Truncates the index (rows) by default. For Series this parameter is unused and defaults to 0.
copybool, default is True,
Return a copy of the truncated section.
Note
The copy keyword will change behavior in pandas 3.0.Copy-on-Writewill be enabled by default, which means that all methods with acopy keyword will use a lazy copy mechanism to defer the copy and ignore the copy keyword. The copy keyword will be removed in a future version of pandas.
You can already get the future behavior and improvements through enabling copy on write pd.options.mode.copy_on_write = True
Returns:
type of caller
The truncated Series or DataFrame.
Notes
If the index being truncated contains only datetime values,before and after may be specified as strings instead of Timestamps.
Examples
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
The columns of a DataFrame can be truncated.
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
For Series, only rows can be truncated.
df['A'].truncate(before=2, after=4) 2 b 3 c 4 d Name: A, dtype: object
The index values in truncate
can be datetimes or string dates.
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
Because the index is a DatetimeIndex containing only dates, we can specify before and after as strings. They will be coerced to Timestamps before truncation.
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
Note that truncate
assumes a 0 value for any unspecified time component (midnight). This differs from partial string slicing, which returns any partially matching dates.
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