w3resource

Pandas Series: truncate() function

Series-truncate() function

The truncate() function is used to 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.

Syntax:

Series.truncate(self, before=None, after=None, axis=None, copy=True)
Pandas Series truncate image
Name Description Type/Default Value Required / Optional
before Truncate all rows before this index value. date, string, int Required
after WTruncate all rows after this index value. date, string, int Required
axis Axis to truncate. Truncates the index (rows) by default. {0 or ‘index’, 1 or ‘columns’} optional
copy Return a copy of the truncated section. boolean
Default Value: True
optional

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.

Example:

Python-Pandas Code:

import numpy as np
import pandas as pd
df = pd.DataFrame({'X': ['j', 'k', 'l', 'm', 'n'],
                   'Y': ['o', 'p', 'q', 'r', 's'],
                   'Z': ['t', 'u', 'v', 'w', 'x']},
                   index=[1, 2, 3, 4, 5])
df

Output:

  X	Y	Z
1	j	o	t
2	k	p	u
3	l	q	v
4	m	r	w
5	n	s	x
Pandas Series truncate image

Python-Pandas Code:

import numpy as np
import pandas as pd
df = pd.DataFrame({'X': ['j', 'k', 'l', 'm', 'n'],
                   'Y': ['o', 'p', 'q', 'r', 's'],
                   'Z': ['t', 'u', 'v', 'w', 'x']},
                   index=[1, 2, 3, 4, 5])
df.truncate(before=2, after=4)

Output:

  X	Y	Z
2	k	p	u
3	l	q	v
4	m	r	w

Example - The columns of a DataFrame can be truncated:

Python-Pandas Code:

import numpy as np
import pandas as pd
df = pd.DataFrame({'X': ['j', 'k', 'l', 'm', 'n'],
                   'Y': ['o', 'p', 'q', 'r', 's'],
                   'Z': ['t', 'u', 'v', 'w', 'x']},
                   index=[1, 2, 3, 4, 5])
df.truncate(before="X", after="Y", axis="columns")

Output:

   
   X	Y
1	j	o
2	k	p
3	l	q
4	m	r
5	n	s

Example - For Series, only rows can be truncated:

Python-Pandas Code:

import numpy as np
import pandas as pd
df = pd.DataFrame({'X': ['j', 'k', 'l', 'm', 'n'],
                   'Y': ['o', 'p', 'q', 'r', 's'],
                   'Z': ['t', 'u', 'v', 'w', 'x']},
                   index=[1, 2, 3, 4, 5])
df['X'].truncate(before=2, after=4)

Output:

   
2    k
3    l
4    m
Name: X, dtype: object

Example - The index values in truncate can be datetimes or string dates:

Python-Pandas Code:

import numpy as np
import pandas as pd
df = pd.DataFrame({'X': ['j', 'k', 'l', 'm', 'n'],
                   'Y': ['o', 'p', 'q', 'r', 's'],
                   'Z': ['t', 'u', 'v', 'w', 'x']},
                   index=[1, 2, 3, 4, 5])
dates = pd.date_range('2019-01-01', '2019-02-01', freq='s')
df = pd.DataFrame(index=dates, data={'X': 1})
df.tail()

Output:

   
                      X
2019-01-31 23:59:56	1
2019-01-31 23:59:57	1
2019-01-31 23:59:58	1
2019-01-31 23:59:59	1
2019-02-01 00:00:00	1

Python-Pandas Code:

import numpy as np
import pandas as pd
df = pd.DataFrame({'X': ['j', 'k', 'l', 'm', 'n'],
                   'Y': ['o', 'p', 'q', 'r', 's'],
                   'Z': ['t', 'u', 'v', 'w', 'x']},
                   index=[1, 2, 3, 4, 5])
dates = pd.date_range('2019-01-01', '2019-02-01', freq='s')
df = pd.DataFrame(index=dates, data={'X': 1})
df.truncate(before=pd.Timestamp('2019-01-05'),
            after=pd.Timestamp('2019-01-10')).tail()

Output:

   
                      X
2019-01-09 23:59:56	1
2019-01-09 23:59:57	1
2019-01-09 23:59:58	1
2019-01-09 23:59:59	1
2019-01-10 00:00:00	1

Because the index is a DatetimeIndex containing only dates, we can specify before and after as strings.

Example - They will be coerced to Timestamps before truncation:

Python-Pandas Code:

import numpy as np
import pandas as pd
df = pd.DataFrame({'X': ['j', 'k', 'l', 'm', 'n'],
                   'Y': ['o', 'p', 'q', 'r', 's'],
                   'Z': ['t', 'u', 'v', 'w', 'x']},
                   index=[1, 2, 3, 4, 5])
dates = pd.date_range('2019-01-01', '2019-02-01', freq='s')
df = pd.DataFrame(index=dates, data={'X': 1})
df.truncate('2019-01-05', '2019-01-10').tail()

Output:

   
                      X
2019-01-09 23:59:56	1
2019-01-09 23:59:57	1
2019-01-09 23:59:58	1
2019-01-09 23:59:59	1
2019-01-10 00:00:00	1

Note: Truncate assumes a 0 value for any unspecified time component (midnight). This differs from partial string slicing, which returns any partially matching dates.

Python-Pandas Code:

import numpy as np
import pandas as pd
df = pd.DataFrame({'X': ['j', 'k', 'l', 'm', 'n'],
                   'Y': ['o', 'p', 'q', 'r', 's'],
                   'Z': ['t', 'u', 'v', 'w', 'x']},
                   index=[1, 2, 3, 4, 5])
dates = pd.date_range('2019-01-01', '2019-02-01', freq='s')
df = pd.DataFrame(index=dates, data={'X': 1})
df.loc['2019-01-05':'2019-01-10', :].tail()

Output:

   
                      X
2019-01-10 23:59:55	1
2019-01-10 23:59:56	1
2019-01-10 23:59:57	1
2019-01-10 23:59:58	1
2019-01-10 23:59:59	1

Previous: Series-tail() function
Next: Series-where() function



Follow us on Facebook and Twitter for latest update.