pandas.DataFrame.truncate#
- DataFrame.truncate(before=None, after=None, axis=None, copy=<no_default>)[源代码]#
在某个索引值之前和之后截断一个 Series 或 DataFrame。
这是基于索引值高于或低于某些阈值进行布尔索引的有用简写。
- 参数:
- 之前日期, 字符串, 整数
在此索引值之前截断所有行。
- 之后日期, 字符串, 整数
截断此索引值之后的所有行。
- 轴{0 或 ‘index’, 1 或 ‘columns’}, 可选
要截断的轴。默认情况下截断索引(行)。对于 Series,此参数未使用并默认为 0。
- 复制bool, 默认是 False,
返回截断部分的副本。
备注
copy 关键字将在 pandas 3.0 中改变行为。写时复制 将被默认启用,这意味着所有带有 copy 关键字的方法将使用一种延迟复制机制来推迟复制并忽略 copy 关键字。copy 关键字将在 pandas 的未来版本中被移除。
通过启用写时复制
pd.options.mode.copy_on_write = True
,您已经可以获得未来的行为和改进。自 3.0.0 版本弃用.
- 返回:
- 调用者类型
被截断的 Series 或 DataFrame。
参见
DataFrame.loc
通过标签选择DataFrame的一个子集。
DataFrame.iloc
按位置选择DataFrame的一个子集。
备注
如果被截断的索引仅包含日期时间值,则可以将 before 和 after 指定为字符串而不是时间戳。
示例
>>> 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
对于系列,只能截断行。
>>> 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 指定为字符串。它们将在截断前被强制转换为时间戳。
>>> 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