Python pandas.DataFrame.truncate函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.truncate方法的使用。

DataFrame.truncate(before=None, after=None, axis=None, copy=True) [source]

在某个索引值之前和之后Truncate Series或DataFrame。

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

参数:

before date, str, int

Truncate此索引值之前的所有行。

after :date, str, int

Truncate此索引值之后的所有行。

axis :{0 ‘index’, 1 ‘columns’}, 可选。

Truncate轴。默认情况下Truncate索引(行)。

copy :bool, 默认为 True

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

推荐阅读
cjavapy编程之路首页