maxframe.dataframe.Series.truncate#

Series.truncate(before=None, after=None, axis=0, copy=None)#

在某些索引值之前和之后截断 Series 或 DataFrame。

这是基于索引值高于或低于某些阈值进行布尔索引的有用简写。

参数:
  • before (date, str, int) -- 在此索引值之前截断所有行。

  • after (date, str, int) -- 在此索引值之后截断所有行。

  • axis ({0 or 'index', 1 or 'columns'}, optional) -- 要截断的轴。默认截断索引(行)。对于 Series,此参数未使用,默认为 0。

  • copy (bool, default is True,) -- 此参数仅为了与 pandas 兼容而保留。

返回:

截断后的 Series 或 DataFrame。

返回类型:

type of caller

参见

DataFrame.loc

按标签选择 DataFrame 的子集。

DataFrame.iloc

按位置选择 DataFrame 的子集。

备注

如果被截断的索引仅包含日期时间值,则 beforeafter 可以指定为字符串而不是时间戳。

示例

>>> 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,我们可以将 beforeafter 指定为字符串。它们将在截断前被强制转换为时间戳。

>>> 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