maxframe.dataframe.Series.truncate#
- Series.truncate(before=None, after=None, axis=0, copy=None)#
在某些索引值之前和之后截断 Series 或 DataFrame。
这是基于索引值高于或低于某些阈值进行布尔索引的有用简写。
- 参数:
- 返回:
截断后的 Series 或 DataFrame。
- 返回类型:
type of caller
参见
DataFrame.loc按标签选择 DataFrame 的子集。
DataFrame.iloc按位置选择 DataFrame 的子集。
备注
如果被截断的索引仅包含日期时间值,则 before 和 after 可以指定为字符串而不是时间戳。
示例
>>> import maxframe.dataframe as md >>> df = md.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.execute() 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).execute() A B C 2 b g l 3 c h m 4 d i n
可以截断 DataFrame 的列。
>>> df.truncate(before="A", after="B", axis="columns").execute() 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).execute() 2 b 3 c 4 d Name: A, dtype: object
truncate中的索引值可以是日期时间或字符串日期。>>> dates = md.date_range('2016-01-01', '2016-02-01', freq='s') >>> df = md.DataFrame(index=dates, data={'A': 1}) >>> df.tail().execute() 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=md.Timestamp('2016-01-05'), ... after=md.Timestamp('2016-01-10')).tail().execute() 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 指定为字符串。它们将在截断前被强制转换为时间戳。
>>> df.truncate('2016-01-05', '2016-01-10').tail().execute() 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().execute() 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