DataFrame.truncate(before=None, after=None, axis=None, copy=True) [source]
在某个索引值之前和之后Truncate Series或DataFrame。
这是基于高于或低于某些阈值的索引值,进行布尔索引的有用捷径。
参数: | before : Truncate此索引值之前的所有行。 after : Truncate此索引值之后的所有行。 axis : Truncate轴。默认情况下Truncate索引(行)。 copy : 返回truncated部分的副本。 |
返回值: | 调用者的type truncated Series或DataFrame。 |
Notes
如果被truncate的索引仅包含日期时间值,则 可以将字符串之前和之后指定为字符串,而不是时间戳。
例子
>>> 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的列可以被truncate
>>> 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,只能将行truncate
>>> 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指定为字符串。truncate之前,它们将被强制为时间戳。
>>> 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