Pandas-2-2-中文文档-二十八-

Pandas 2.2 中文文档(二十八)

原文:pandas.pydata.org/docs/

pandas.CategoricalIndex.ordered

原文:pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.ordered.html

property CategoricalIndex.ordered

分类是否具有有序关系。

示例

对于pandas.Series

>>> ser = pd.Series(['a', 'b', 'c', 'a'], dtype='category')
>>> ser.cat.ordered
False 
>>> raw_cat = pd.Categorical(['a', 'b', 'c', 'a'], ordered=True)
>>> ser = pd.Series(raw_cat)
>>> ser.cat.ordered
True 

对于pandas.Categorical

>>> cat = pd.Categorical(['a', 'b'], ordered=True)
>>> cat.ordered
True 
>>> cat = pd.Categorical(['a', 'b'], ordered=False)
>>> cat.ordered
False 

对于pandas.CategoricalIndex

>>> ci = pd.CategoricalIndex(['a', 'b'], ordered=True)
>>> ci.ordered
True 
>>> ci = pd.CategoricalIndex(['a', 'b'], ordered=False)
>>> ci.ordered
False 

pandas.CategoricalIndex.rename_categories

原文:pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.rename_categories.html

CategoricalIndex.rename_categories(*args, **kwargs)

重命名类别。

参数:

new_categories类似列表、类似字典或可调用对象

将替换旧类别的新类别。

  • 类似列表:所有项必须唯一,并且新类别的数量必须与现有类别的数量相匹配。

  • 类似字典:指定从旧类别到新类别的映射。未包含在映射中的类别将通过,映射中的额外类别将被忽略。

  • 可调用对象:一个在所有旧类别项上调用的可调用对象,其返回值包括新类别。

返回:

分类的

具有重命名类别的分类。

引发:

ValueError

如果新类别类似于列表,并且与当前类别的数量不同,或者不能验证为类别

另请参阅

reorder_categories

重新排序类别。

add_categories

添加新类别。

remove_categories

移除指定的类别。

remove_unused_categories

移除未使用的类别。

set_categories

设置为指定的类别。

示例

>>> c = pd.Categorical(['a', 'a', 'b'])
>>> c.rename_categories([0, 1])
[0, 0, 1]
Categories (2, int64): [0, 1] 

对于类似字典的new_categories,额外的键将被忽略,不在字典中的类别将通过

>>> c.rename_categories({'a': 'A', 'c': 'C'})
['A', 'A', 'b']
Categories (2, object): ['A', 'b'] 

您还可以提供一个可调用对象来创建新类别

>>> c.rename_categories(lambda x: x.upper())
['A', 'A', 'B']
Categories (2, object): ['A', 'B'] 

pandas.CategoricalIndex.reorder_categories

原文:pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.reorder_categories.html

CategoricalIndex.reorder_categories(*args, **kwargs)

按照 new_categories 指定的顺序重新排序类别。

new_categories 需要包括所有旧的类别,且不包含新的类别项。

参数:

new_categories 类似索引

新顺序中的类别。

ordered 布尔值,可选

是否将分类视为有序分类。如果未给出,则不更改有序信息。

返回:

分类

重新排序的分类。

引发:

ValueError

如果新类别不包含所有旧类别项或任何新类别项

另请参阅

重命名类别

重命名类别。

添加类别

添加新的类别。

移除类别

移除指定的类别。

移除未使用的类别

移除未使用的类别。

设置类别

将类别设置为指定的类别。

示例

对于 pandas.Series:

>>> ser = pd.Series(['a', 'b', 'c', 'a'], dtype='category')
>>> ser = ser.cat.reorder_categories(['c', 'b', 'a'], ordered=True)
>>> ser
0   a
1   b
2   c
3   a
dtype: category
Categories (3, object): ['c' < 'b' < 'a'] 
>>> ser.sort_values()
2   c
1   b
0   a
3   a
dtype: category
Categories (3, object): ['c' < 'b' < 'a'] 

对于 pandas.CategoricalIndex:

>>> ci = pd.CategoricalIndex(['a', 'b', 'c', 'a'])
>>> ci
CategoricalIndex(['a', 'b', 'c', 'a'], categories=['a', 'b', 'c'],
 ordered=False, dtype='category')
>>> ci.reorder_categories(['c', 'b', 'a'], ordered=True)
CategoricalIndex(['a', 'b', 'c', 'a'], categories=['c', 'b', 'a'],
 ordered=True, dtype='category') 

pandas.CategoricalIndex.add_categories

原文:pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.add_categories.html

CategoricalIndex.add_categories(*args, **kwargs)

添加新的类别。

新的类别将在类别中的最后/最高位置包含,并在此调用之后立即变为未使用。

参数:

new_categories类别或类别的类别列表

要包含的新类别。

返回:

分类

添加了新类别的分类索引。

Raises:

ValueError

如果新的类别包括旧的类别或者无法验证为类别

另请参阅

rename_categories

重命名类别。

reorder_categories

重新排序类别。

remove_categories

移除指定的类别。

remove_unused_categories

删除未使用的类别。

set_categories

将类别设置为指定的类别。

示例

>>> c = pd.Categorical(['c', 'b', 'c'])
>>> c
['c', 'b', 'c']
Categories (2, object): ['b', 'c'] 
>>> c.add_categories(['d', 'a'])
['c', 'b', 'c']
Categories (4, object): ['b', 'c', 'd', 'a'] 

pandas.CategoricalIndex.remove_categories

原文:pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.remove_categories.html

CategoricalIndex.remove_categories(*args, **kwargs)

删除指定的类别。

删除必须包含在旧类别中。已从已删除类别中删除的值将设置为 NaN

参数:

removals类别或类别列表

应该删除的类别。

返回:

类别

移除了类别的类别。

引发:

ValueError

如果删除的内容不包含在类别中

另请参见

rename_categories

重命名类别。

reorder_categories

重新排序类别。

add_categories

添加新类别。

remove_unused_categories

删除未使用的类别。

set_categories

设置为指定的类别。

示例

>>> c = pd.Categorical(['a', 'c', 'b', 'c', 'd'])
>>> c
['a', 'c', 'b', 'c', 'd']
Categories (4, object): ['a', 'b', 'c', 'd'] 
>>> c.remove_categories(['d', 'a'])
[NaN, 'c', 'b', 'c', NaN]
Categories (2, object): ['b', 'c'] 

pandas.CategoricalIndex.remove_unused_categories

原文:pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.remove_unused_categories.html

CategoricalIndex.remove_unused_categories(*args, **kwargs)

移除未使用的类别。

返回:

分类

去除未使用类别的分类。

另请参阅

rename_categories

重命名类别。

reorder_categories

重新排序类别。

add_categories

添加新类别。

remove_categories

移除指定的类别。

set_categories

将类别设置为指定的类别。

示例

>>> c = pd.Categorical(['a', 'c', 'b', 'c', 'd'])
>>> c
['a', 'c', 'b', 'c', 'd']
Categories (4, object): ['a', 'b', 'c', 'd'] 
>>> c[2] = 'a'
>>> c[4] = 'c'
>>> c
['a', 'c', 'a', 'c', 'c']
Categories (4, object): ['a', 'b', 'c', 'd'] 
>>> c.remove_unused_categories()
['a', 'c', 'a', 'c', 'c']
Categories (2, object): ['a', 'c'] 

pandas.CategoricalIndex.set_categories

原文:pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.set_categories.html

CategoricalIndex.set_categories(*args, **kwargs)

将类别设置为指定的新类别。

new_categories可以包括新类别(这将导致未使用的类别)或删除旧类别(这将导致值设置为NaN)。如果rename=True,则类别将简单重命名(少于或多于旧类别中的项目将导致值设置为NaN或未使用的类别)。

此方法可用于同时执行添加、删除和重新排序多个操作,因此比通过更专门的方法执行单个步骤更快。

另一方面,此方法不执行检查(例如,旧类别是否包含在新类别中以进行重新排序),这可能导致意外更改,例如在使用特殊字符串 dtype 时,不考虑 S1 字符串等于单个字符的 python 字符串。

参数:

new_categories类似于索引

新顺序中的类别。

ordered布尔值,默认为 False

是否将分类视为有序分类。如果未给出,则不更改有序信息。

rename布尔值,默认为 False

新类别应被视为旧类别的重命名还是重新排序类别。

返回:

具有重新排序类别的分类。

引发:

ValueError

如果新类别不符合类别验证

另请参阅

rename_categories

重命名类别。

reorder_categories

重新排序类别。

add_categories

添加新类别。

remove_categories

删除指定的类别。

remove_unused_categories

删除未使用的类别。

示例

对于pandas.Series:

>>> raw_cat = pd.Categorical(['a', 'b', 'c', 'A'],
...                           categories=['a', 'b', 'c'], ordered=True)
>>> ser = pd.Series(raw_cat)
>>> ser
0   a
1   b
2   c
3   NaN
dtype: category
Categories (3, object): ['a' < 'b' < 'c'] 
>>> ser.cat.set_categories(['A', 'B', 'C'], rename=True)
0   A
1   B
2   C
3   NaN
dtype: category
Categories (3, object): ['A' < 'B' < 'C'] 

对于pandas.CategoricalIndex:

>>> ci = pd.CategoricalIndex(['a', 'b', 'c', 'A'],
...                          categories=['a', 'b', 'c'], ordered=True)
>>> ci
CategoricalIndex(['a', 'b', 'c', nan], categories=['a', 'b', 'c'],
 ordered=True, dtype='category') 
>>> ci.set_categories(['A', 'b', 'c'])
CategoricalIndex([nan, 'b', 'c', nan], categories=['A', 'b', 'c'],
 ordered=True, dtype='category')
>>> ci.set_categories(['A', 'b', 'c'], rename=True)
CategoricalIndex(['A', 'b', 'c', nan], categories=['A', 'b', 'c'],
 ordered=True, dtype='category') 

pandas.CategoricalIndex.as_ordered

原文:pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.as_ordered.html

CategoricalIndex.as_ordered(*args, **kwargs)

将分类设置为有序。

返回:

分类

有序分类。

示例

对于 pandas.Series

>>> ser = pd.Series(['a', 'b', 'c', 'a'], dtype='category')
>>> ser.cat.ordered
False
>>> ser = ser.cat.as_ordered()
>>> ser.cat.ordered
True 

对于 pandas.CategoricalIndex

>>> ci = pd.CategoricalIndex(['a', 'b', 'c', 'a'])
>>> ci.ordered
False
>>> ci = ci.as_ordered()
>>> ci.ordered
True 

pandas.CategoricalIndex.as_unordered

原文:pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.as_unordered.html

CategoricalIndex.as_unordered(*args, **kwargs)

将分类设置为无序。

返回:

分类(Categorical)

无序分类(Unordered Categorical)。

示例

对于 pandas.Series

>>> raw_cat = pd.Categorical(['a', 'b', 'c', 'a'], ordered=True)
>>> ser = pd.Series(raw_cat)
>>> ser.cat.ordered
True
>>> ser = ser.cat.as_unordered()
>>> ser.cat.ordered
False 

对于 pandas.CategoricalIndex

>>> ci = pd.CategoricalIndex(['a', 'b', 'c', 'a'], ordered=True)
>>> ci.ordered
True
>>> ci = ci.as_unordered()
>>> ci.ordered
False 

pandas.CategoricalIndex.map

原文:pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.map.html

CategoricalIndex.map(mapper, na_action=None)

使用输入映射或函数映射值。

将索引的值(它们的类别,而不是代码)映射到新的类别。如果映射对应是一对一的,则结果是一个CategoricalIndex,其具有与原始索引相同的顺序属性,否则将返回一个Index

如果使用字典或Series,则任何未映射的类别将被映射为 NaN。请注意,如果发生这种情况,则将返回一个Index

参数:

mapper函数,字典或者 Series。

映射对应。

返回:

pandas.CategoricalIndex 或 pandas.Index

映射后的索引。

另请参阅。

Index.map

Index上应用映射对应。

Series.map

Series上应用映射对应。

Series.apply

Series上应用更复杂的函数。

示例

>>> idx = pd.CategoricalIndex(['a', 'b', 'c'])
>>> idx
CategoricalIndex(['a', 'b', 'c'], categories=['a', 'b', 'c'],
 ordered=False, dtype='category')
>>> idx.map(lambda x: x.upper())
CategoricalIndex(['A', 'B', 'C'], categories=['A', 'B', 'C'],
 ordered=False, dtype='category')
>>> idx.map({'a': 'first', 'b': 'second', 'c': 'third'})
CategoricalIndex(['first', 'second', 'third'], categories=['first',
 'second', 'third'], ordered=False, dtype='category') 

如果映射是一对一的,则类别的顺序将被保留:

>>> idx = pd.CategoricalIndex(['a', 'b', 'c'], ordered=True)
>>> idx
CategoricalIndex(['a', 'b', 'c'], categories=['a', 'b', 'c'],
 ordered=True, dtype='category')
>>> idx.map({'a': 3, 'b': 2, 'c': 1})
CategoricalIndex([3, 2, 1], categories=[3, 2, 1], ordered=True,
 dtype='category') 

如果映射不是一对一的,则返回一个Index

>>> idx.map({'a': 'first', 'b': 'second', 'c': 'first'})
Index(['first', 'second', 'first'], dtype='object') 

如果使用字典,则所有未映射的类别都将映射为 NaN,并且结果是一个Index

>>> idx.map({'a': 'first', 'b': 'second'})
Index(['first', 'second', nan], dtype='object') 

pandas.CategoricalIndex.equals

原文:pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.equals.html

CategoricalIndex.equals(other)

确定两个 CategoricalIndex 对象是否包含相同的元素。

返回:

布尔值

如果两个pandas.CategoricalIndex对象具有相同的元素,则为True,否则为False

示例

>>> ci = pd.CategoricalIndex(['a', 'b', 'c', 'a', 'b', 'c'])
>>> ci2 = pd.CategoricalIndex(pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c']))
>>> ci.equals(ci2)
True 

元素的顺序很重要。

>>> ci3 = pd.CategoricalIndex(['c', 'b', 'a', 'a', 'b', 'c'])
>>> ci.equals(ci3)
False 

有序性也很重要。

>>> ci4 = ci.as_ordered()
>>> ci.equals(ci4)
False 

类别很重要,但是只有在ordered=True时类别的顺序才重要。

>>> ci5 = ci.set_categories(['a', 'b', 'c', 'd'])
>>> ci.equals(ci5)
False 
>>> ci6 = ci.set_categories(['b', 'c', 'a'])
>>> ci.equals(ci6)
True
>>> ci_ordered = pd.CategoricalIndex(['a', 'b', 'c', 'a', 'b', 'c'],
...                                  ordered=True)
>>> ci2_ordered = ci_ordered.set_categories(['b', 'c', 'a'])
>>> ci_ordered.equals(ci2_ordered)
False 

pandas 区间索引

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.html

class pandas.IntervalIndex(data, closed=None, dtype=None, copy=False, name=None, verify_integrity=True)

包含在同一侧关闭的区间的不可变索引。

参数:

data类似数组(1 维)

类似数组(ndarray,DateTimeArrayTimeDeltaArray),其中包含用于构建区间索引的区间对象。

closed,默认为 'right'

区间是否在左侧、右侧、两侧还是无侧。

dtypedtype 或 None,默认为 None

如果为 None,则将推断出 dtype。

copy布尔值,默认为 False

复制输入数据。

name对象,可选

要存储在索引中的名称。

verify_integrity布尔值,默认为 True

验证区间索引是否有效。

另请参阅

索引

pandas 基本索引类型。

区间

有界切片样式的区间;区间索引的元素。

interval_range

创建固定频率区间索引的函数。

切分

将值分成离散的区间。

qcut

根据排名或样本分位数将值分成大小相等的区间。

注意

有关更多信息,请参阅用户指南

示例

通常使用 interval_range() 构造新的 IntervalIndex

>>> pd.interval_range(start=0, end=5)
IntervalIndex([(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]],
 dtype='interval[int64, right]') 

也可以使用以下构造方法之一构造:IntervalIndex.from_arrays()IntervalIndex.from_breaks()IntervalIndex.from_tuples()

请参阅 interval_range 和上述构造方法的文档字符串中的更多示例。

属性

closed 描述区间包含侧的字符串。
is_empty 指示区间是否为空,即不包含任何点。
is_non_overlapping_monotonic 返回布尔值,指示 IntervalArray 是否不重叠且单调。
is_overlapping 如果 IntervalIndex 存在重叠的区间,则返回 True,否则返回 False。
values 返回表示索引中数据的数组。
左边
右边
中间
长度

方法

from_arrays(left, right[, closed, name, ...]) 从定义左右边界的两个数组构造。
from_tuples(data[, closed, name, copy, dtype]) 从元组数组构造一个 IntervalIndex。
from_breaks(breaks[, closed, name, copy, dtype]) 从一个分割数组构造一个 IntervalIndex。
contains(*args, **kwargs) 逐个元素检查区间是否包含该值。
overlaps(*args, **kwargs) 逐个元素检查一个区间是否与 IntervalArray 中的值重叠。
set_closed(*args, **kwargs) 返回一个在指定边上相同的 IntervalArray。
to_tuples(*args, **kwargs) 返回一个元组数组(如果 self 是 IntervalArray)或索引(如果 self 是 IntervalIndex),形式为 (左边界, 右边界)。

pandas.IntervalIndex.from_arrays

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.from_arrays.html

classmethod IntervalIndex.from_arrays(left, right, closed='right', name=None, copy=False, dtype=None)

从定义左边界和右边界的两个数组构造。

参数:

leftarray-like(1 维)

每个区间的左边界。

rightarray-like(1 维)

每个区间的右边界。

closed,默认为 ‘right’

区间是在左侧、右侧、两侧还是都不封闭。

namestr,可选

结果 IntervalIndex 的名称。

copybool,默认为 False

复制数据。

dtypedtype,可选

如果为 None,则 dtype 将被推断。

返回:

IntervalIndex

引发:

ValueError

当一个值只在左边或右边缺失时。当左边的一个值大于右边的相应值时。

另请参阅

interval_range

创建固定频率 IntervalIndex 的函数。

IntervalIndex.from_breaks

从一个分割数组构建一个 IntervalIndex。

IntervalIndex.from_tuples

从元组的数组样式构建 IntervalIndex。

注释

左边的每个元素必须小于或等于相同位置处的右边元素。如果一个元素缺失,则左边和右边都必须缺失。使用不受支持的 left 或 right 类型时会引发 TypeError。目前,不支持 ‘category’、‘object’ 和 ‘string’ 子类型。

示例

>>> pd.IntervalIndex.from_arrays([0, 1, 2], [1, 2, 3])
IntervalIndex([(0, 1], (1, 2], (2, 3]],
 dtype='interval[int64, right]') 

pandas.IntervalIndex.from_tuples

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.from_tuples.html

classmethod IntervalIndex.from_tuples(data, closed='right', name=None, copy=False, dtype=None)

从元组的类似数组构造一个区间索引。

参数:

data类似数组(1 维)

元组数组。

closed, 默认 ‘right’

区间是否在左侧、右侧、两侧或无一侧闭合。

namestr, 可选

结果区间索引的名称。

copy布尔值,默认为 False

默认情况下复制数据,这只是兼容性的,会被忽略。

dtypedtype 或 None,默认为 None

如果为 None,则 dtype 将被推断。

返回:

区间索引

另请参阅

interval_range

创建一个固定频率区间索引的函数。

IntervalIndex.from_arrays

从左侧和右侧数组构造一个区间索引。

IntervalIndex.from_breaks

从分割数组构造一个区间索引。

示例

>>> pd.IntervalIndex.from_tuples([(0, 1), (1, 2)])
IntervalIndex([(0, 1], (1, 2]],
 dtype='interval[int64, right]') 

pandas.IntervalIndex.from_breaks

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.from_breaks.html

classmethod IntervalIndex.from_breaks(breaks, closed='right', name=None, copy=False, dtype=None)

从分割数组构建 IntervalIndex。

参数:

breaks类似数组(一维)

每个区间的左右边界。

closed,默认为‘right’

区间在左侧、右侧、两侧还是无侧是否封闭。

name字符串,可选

结果 IntervalIndex 的名称。

copy布尔值,默认为 False

复制数据。

dtypedtype 或 None,默认为 None

如果为 None,则将推断 dtype。

返回:

IntervalIndex

另请参阅

interval_range

创建固定频率 IntervalIndex 的函数。

IntervalIndex.from_arrays

从左侧和右侧数组构建。

IntervalIndex.from_tuples

从元组序列构建。

示例

>>> pd.IntervalIndex.from_breaks([0, 1, 2, 3])
IntervalIndex([(0, 1], (1, 2], (2, 3]],
 dtype='interval[int64, right]') 

pandas.IntervalIndex.left

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.left.html

IntervalIndex.left

pandas.IntervalIndex.right

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.right.html

IntervalIndex.right

pandas.IntervalIndex.mid

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.mid.html

IntervalIndex.mid

pandas.IntervalIndex.closed

pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.closed.html

IntervalIndex.closed

描述区间的包含侧的字符串。

可以是leftrightbothneither

例子

对于数组:

>>> interv_arr = pd.arrays.IntervalArray([pd.Interval(0, 1), pd.Interval(1, 5)])
>>> interv_arr
<IntervalArray>
[(0, 1], (1, 5]]
Length: 2, dtype: interval[int64, right]
>>> interv_arr.closed
'right' 

对于区间索引:

>>> interv_idx = pd.interval_range(start=0, end=2)
>>> interv_idx
IntervalIndex([(0, 1], (1, 2]], dtype='interval[int64, right]')
>>> interv_idx.closed
'right' 

pandas.IntervalIndex.length

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.length.html

property IntervalIndex.length

pandas.IntervalIndex.values

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.values.html

property IntervalIndex.values

返回表示索引中数据的数组。

警告

我们建议使用 Index.arrayIndex.to_numpy(),取决于您需要对底层数据的引用还是一个 NumPy 数组。

返回:

array: numpy.ndarray 或 ExtensionArray

另请参阅

Index.array

对底层数据的引用。

Index.to_numpy

表示底层数据的 NumPy 数组。

示例

对于 pandas.Index

>>> idx = pd.Index([1, 2, 3])
>>> idx
Index([1, 2, 3], dtype='int64')
>>> idx.values
array([1, 2, 3]) 

对于 pandas.IntervalIndex

>>> idx = pd.interval_range(start=0, end=5)
>>> idx.values
<IntervalArray>
[(0, 1], (1, 2], (2, 3], (3, 4], (4, 5]]
Length: 5, dtype: interval[int64, right] 

pandas.IntervalIndex.is_empty

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.is_empty.html

property IntervalIndex.is_empty

表示间隔是否为空,即它不包含任何点。

返回:

bool 或 ndarray

一个布尔型,指示标量 Interval 是否为空,或者在 IntervalArrayIntervalIndex 中,布尔型 ndarray 表示 Interval 是否为空。

另请参阅

Interval.length

返回间隔的长度。

示例

包含点的 Interval 不为空:

>>> pd.Interval(0, 1, closed='right').is_empty
False 

不包含任何点的 Interval 是空的:

>>> pd.Interval(0, 0, closed='right').is_empty
True
>>> pd.Interval(0, 0, closed='left').is_empty
True
>>> pd.Interval(0, 0, closed='neither').is_empty
True 

包含单个点的 Interval 不为空:

>>> pd.Interval(0, 0, closed='both').is_empty
False 

IntervalArrayIntervalIndex 返回一个布尔型 ndarray,位置表示 Interval 是否为空:

>>> ivs = [pd.Interval(0, 0, closed='neither'),
...        pd.Interval(1, 2, closed='neither')]
>>> pd.arrays.IntervalArray(ivs).is_empty
array([ True, False]) 

缺失值不视为空:

>>> ivs = [pd.Interval(0, 0, closed='neither'), np.nan]
>>> pd.IntervalIndex(ivs).is_empty
array([ True, False]) 

pandas.IntervalIndex.is_non_overlapping_monotonic

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.is_non_overlapping_monotonic.html

IntervalIndex.is_non_overlapping_monotonic

返回一个布尔值,指示 IntervalArray 是否是非重叠且单调的。

非重叠意味着(没有区间共享点),单调意味着单调递增或单调递减。

示例

对于数组:

>>> interv_arr = pd.arrays.IntervalArray([pd.Interval(0, 1), pd.Interval(1, 5)])
>>> interv_arr
<IntervalArray>
[(0, 1], (1, 5]]
Length: 2, dtype: interval[int64, right]
>>> interv_arr.is_non_overlapping_monotonic
True 
>>> interv_arr = pd.arrays.IntervalArray([pd.Interval(0, 1),
...                                       pd.Interval(-1, 0.1)])
>>> interv_arr
<IntervalArray>
[(0.0, 1.0], (-1.0, 0.1]]
Length: 2, dtype: interval[float64, right]
>>> interv_arr.is_non_overlapping_monotonic
False 

对于区间索引:

>>> interv_idx = pd.interval_range(start=0, end=2)
>>> interv_idx
IntervalIndex([(0, 1], (1, 2]], dtype='interval[int64, right]')
>>> interv_idx.is_non_overlapping_monotonic
True 
>>> interv_idx = pd.interval_range(start=0, end=2, closed='both')
>>> interv_idx
IntervalIndex([[0, 1], [1, 2]], dtype='interval[int64, both]')
>>> interv_idx.is_non_overlapping_monotonic
False 

pandas.IntervalIndex.is_overlapping

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.is_overlapping.html

property IntervalIndex.is_overlapping

如果 IntervalIndex 具有重叠的区间,则返回 True,否则返回 False。

如果两个区间共享一个公共点,包括闭合端点,则它们重叠。只有一个共同的开放端点的区间不重叠。

返回:

布尔值

布尔值,指示 IntervalIndex 是否具有重叠的区间。

另请参见

Interval.overlaps

检查两个 Interval 对象是否重叠。

IntervalIndex.overlaps

逐个元素检查 IntervalIndex 是否存在重叠。

示例

>>> index = pd.IntervalIndex.from_tuples([(0, 2), (1, 3), (4, 5)])
>>> index
IntervalIndex([(0, 2], (1, 3], (4, 5]],
 dtype='interval[int64, right]')
>>> index.is_overlapping
True 

具有相同闭合端点的区间重叠:

>>> index = pd.interval_range(0, 3, closed='both')
>>> index
IntervalIndex([[0, 1], [1, 2], [2, 3]],
 dtype='interval[int64, both]')
>>> index.is_overlapping
True 

只有一个共同的开放端点的区间不重叠:

>>> index = pd.interval_range(0, 3, closed='left')
>>> index
IntervalIndex([[0, 1), [1, 2), [2, 3)],
 dtype='interval[int64, left]')
>>> index.is_overlapping
False 

pandas.IntervalIndex.get_loc

参考链接:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.get_loc.html

IntervalIndex.get_loc(key)

返回请求标签的整数位置、切片或布尔掩码。

参数:

关键字标签

返回结果:

如果索引是唯一的,返回整数;如果索引是单调的,返回切片;否则返回掩码。

示例

>>> i1, i2 = pd.Interval(0, 1), pd.Interval(1, 2)
>>> index = pd.IntervalIndex([i1, i2])
>>> index.get_loc(1)
0 

您还可以提供一个区间内的点。

>>> index.get_loc(1.5)
1 

如果一个标签在多个区间中,你将会得到所有相关区间的位置。

>>> i3 = pd.Interval(0, 2)
>>> overlapping_index = pd.IntervalIndex([i1, i2, i3])
>>> overlapping_index.get_loc(0.5)
array([ True, False,  True]) 

如果提供了一个区间,只会返回完全匹配的结果。

>>> index.get_loc(pd.Interval(0, 1))
0 

pandas.IntervalIndex.get_indexer

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.get_indexer.html

IntervalIndex.get_indexer(target, method=None, limit=None, tolerance=None)

计算给定当前索引的新索引的索引器和掩码。

然后应使用索引器作为 ndarray.take 的输入,以将当前数据与新索引对齐。

参数:

targetIndex

method,可选

  • default:仅进行精确匹配。

  • pad / ffill:如果没有精确匹配,则找到上一个索引值。

  • backfill / bfill:如果没有精确匹配,则使用下一个索引值

  • nearest:如果没有精确匹配,则使用最近的索引值。如果距离相同,则偏好较大的索引值。

limitint,可选

要匹配的 target 中的最大连续标签数,用于不精确匹配。

tolerance,可选

原标签与新标签之间的最大距离,用于不精确匹配。在匹配位置的索引值必须满足方程 abs(index[indexer] - target) <= tolerance

容差可以是一个标量值,适用于所有值的相同容差,也可以是类似列表的值,适用于每个元素的可变容差。类似列表的包括列表、元组、数组、Series,必须与索引的大小完全匹配且其 dtype 必须与索引的类型完全匹配。

返回值:

np.ndarray[np.intp]

整数从 0 到 n - 1 表示这些位置的索引与相应的目标值匹配。目标中的缺失值由 -1 标记。

注意事项

对于不匹配的值返回 -1,详细解释请参见下面的示例。

示例

>>> index = pd.Index(['c', 'a', 'b'])
>>> index.get_indexer(['a', 'b', 'x'])
array([ 1,  2, -1]) 

注意返回值是一个由 indexx 中的位置组成的数组,其中没有在 index 中的值由 -1 标记。

pandas.IntervalIndex.set_closed

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.set_closed.html

IntervalIndex.set_closed(*args, **kwargs)

返回一个在指定侧关闭的相同 IntervalArray。

参数:

closed

区间是否在左侧、右侧、两侧或者都不闭合。

返回值:

IntervalArray

示例

>>> index = pd.arrays.IntervalArray.from_breaks(range(4))
>>> index
<IntervalArray>
[(0, 1], (1, 2], (2, 3]]
Length: 3, dtype: interval[int64, right]
>>> index.set_closed('both')
<IntervalArray>
[[0, 1], [1, 2], [2, 3]]
Length: 3, dtype: interval[int64, both] 

pandas.IntervalIndex.contains

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.contains.html

IntervalIndex.contains(*args, **kwargs)

逐个元素地检查区间是否包含该值。

返回一个布尔蒙版,指示值是否包含在 IntervalArray 的区间中。

参数:

其他标量

要检查的值是否包含在区间内。

返回值:

布尔数组

另请参阅

Interval.contains

检查区间对象是否包含值。

IntervalArray.overlaps

检查一个区间是否与 IntervalArray 中的值重叠。

示例

>>> intervals = pd.arrays.IntervalArray.from_tuples([(0, 1), (1, 3), (2, 4)])
>>> intervals
<IntervalArray>
[(0, 1], (1, 3], (2, 4]]
Length: 3, dtype: interval[int64, right] 
>>> intervals.contains(0.5)
array([ True, False, False]) 

pandas.IntervalIndex.overlaps

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.overlaps.html

IntervalIndex.overlaps(*args, **kwargs)

逐元素检查一个区间是否与 IntervalArray 中的值重叠。

两个区间重叠,如果它们共享一个公共点,包括封闭端点。只有共享一个开放端点的区间不会重叠。

参数:

otherIntervalArray

要检查重叠的区间。

返回:

ndarray

布尔数组,指示重叠发生的位置。

另请参阅

Interval.overlaps

检查两个 Interval 对象是否重叠。

示例

>>> data = [(0, 1), (1, 3), (2, 4)]
>>> intervals = pd.arrays.IntervalArray.from_tuples(data)
>>> intervals
<IntervalArray>
[(0, 1], (1, 3], (2, 4]]
Length: 3, dtype: interval[int64, right] 
>>> intervals.overlaps(pd.Interval(0.5, 1.5))
array([ True,  True, False]) 

共享封闭端点的区间会重叠:

>>> intervals.overlaps(pd.Interval(1, 3, closed='left'))
array([ True,  True, True]) 

只有共享一个开放端点的区间不会重叠:

>>> intervals.overlaps(pd.Interval(1, 2, closed='right'))
array([False,  True, False]) 

pandas.IntervalIndex.to_tuples

原文:pandas.pydata.org/docs/reference/api/pandas.IntervalIndex.to_tuples.html

IntervalIndex.to_tuples(*args, **kwargs)

返回一个元组形式为(left,right)的 ndarray(如果 self 是 IntervalArray)或 Index(如果 self 是 IntervalIndex)。

参数:

na_tuplebool,默认为 True

如果为True,返回NA作为元组(nan, nan)。如果为False,只返回NA作为nan

返回:

元组:ndarray(如果 self 是 IntervalArray)或 Index(如果 self 是 IntervalIndex)

示例

对于pandas.IntervalArray

>>> idx = pd.arrays.IntervalArray.from_tuples([(0, 1), (1, 2)])
>>> idx
<IntervalArray>
[(0, 1], (1, 2]]
Length: 2, dtype: interval[int64, right]
>>> idx.to_tuples()
array([(0, 1), (1, 2)], dtype=object) 

对于pandas.IntervalIndex

>>> idx = pd.interval_range(start=0, end=2)
>>> idx
IntervalIndex([(0, 1], (1, 2]], dtype='interval[int64, right]')
>>> idx.to_tuples()
Index([(0, 1), (1, 2)], dtype='object') 

pandas.MultiIndex

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.html

class pandas.MultiIndex(levels=None, codes=None, sortorder=None, names=None, dtype=None, copy=False, name=None, verify_integrity=True)

pandas 对象的多级或分层索引对象。

参数:

levels数组序列

每个级别的唯一标签。

codes数组序列

每个级别的整数指定每个位置的标签。

sortorder可选整数

排序级别(必须按该级别的字典顺序排序)。

names可选对象序列

每个索引级别的名称(name 用于兼容)。

copy布尔值,默认为 False

复制元数据。

verify_integrity布尔值,默认为 True

检查级别/代码是否一致且有效。

另请参阅

MultiIndex.from_arrays

将数组列表转换为 MultiIndex。

MultiIndex.from_product

从可迭代对象的笛卡尔积创建 MultiIndex。

MultiIndex.from_tuples

将元组列表转换为 MultiIndex。

MultiIndex.from_frame

从 DataFrame 创建 MultiIndex。

Index

基础 pandas Index 类型。

注释

请参阅用户指南了解更多信息。

示例

通常使用其中一个辅助方法 MultiIndex.from_arrays()MultiIndex.from_product()MultiIndex.from_tuples() 构建新的 MultiIndex。例如(使用 .from_arrays):

>>> arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]
>>> pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))
MultiIndex([(1,  'red'),
 (1, 'blue'),
 (2,  'red'),
 (2, 'blue')],
 names=['number', 'color']) 

在提到的辅助方法的文档字符串中查看更多构建 MultiIndex 的示例。

属性

names MultiIndex 中各级别的名称。
levels MultiIndex 的级别。
nlevels 此 MultiIndex 中级别的整数数量。
levshape 各级别的长度的元组。
dtypes 返回基础 MultiIndex 的 dtypes 作为 Series。
codes

方法

from_arrays(arrays[, sortorder, names]) 将数组转换为 MultiIndex。
from_tuples(tuples[, sortorder, names]) 将元组列表转换为 MultiIndex。
from_product(iterables[, sortorder, names]) 从多个可迭代对象的笛卡尔积创建 MultiIndex。
from_frame(df[, sortorder, names]) 从 DataFrame 创建 MultiIndex。
set_levels(levels, *[, level, verify_integrity]) 在 MultiIndex 上设置新级别。
set_codes(codes, *[, level, verify_integrity]) 设置 MultiIndex 上的新编码。
to_frame([index, name, allow_duplicates]) 将 MultiIndex 的级别作为列创建 DataFrame。
to_flat_index() 将 MultiIndex 转换为包含级别值的元组的索引。
sortlevel([level, ascending, ...]) 按请求的级别对 MultiIndex 进行排序。
droplevel([level]) 返回删除请求级别的索引。
swaplevel([i, j]) 交换级别 i 和级别 j。
reorder_levels(order) 使用输入顺序重新排列级别。
remove_unused_levels() 从当前 MultiIndex 创建新的 MultiIndex,删除未使用的级别。
get_level_values(level) 返回请求级别的标签值向量。
get_indexer(target[, method, limit, tolerance]) 给定当前索引,计算新索引的索引器和掩码。
get_loc(key) 获取标签或标签元组的位置。
get_locs(seq) 获取一系列标签的位置。
get_loc_level(key[, level, drop_level]) 获取所请求的标签/级别的位置和切片索引。
drop(codes[, level, errors]) 用传入的代码列表删除一个新的pandas.MultiIndex

pandas.MultiIndex.from_arrays

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.from_arrays.html

classmethod MultiIndex.from_arrays(arrays, sortorder=None, names=_NoDefault.no_default)

将数组转换为 MultiIndex。

参数:

arrays列表 / 数组样式序列

每个数组样式为每个数据点提供一个级别的值。数组的长度为级别数。

sortorderint 或 None

排序级别(必须按该级别的字典顺序排序)。

names列表 / 字符串序列,可选

索引中各级别的名称。

返回:

MultiIndex

参见

MultiIndex.from_tuples

将元组列表转换为 MultiIndex。

MultiIndex.from_product

从可迭代对象的笛卡尔积中创建 MultiIndex。

MultiIndex.from_frame

从 DataFrame 创建 MultiIndex。

示例

>>> arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]
>>> pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))
MultiIndex([(1,  'red'),
 (1, 'blue'),
 (2,  'red'),
 (2, 'blue')],
 names=['number', 'color']) 

pandas.MultiIndex.from_tuples

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.from_tuples.html

classmethod MultiIndex.from_tuples(tuples, sortorder=None, names=None)

将元组列表转换为 MultiIndex。

参数:

tuples列表 / 元组序列

每个元组是一行/列的索引。

sortorderint 或 None

排序级别(必须按该级别的词典顺序排序)。

names列表 / 字符串序列,可选

索引中级别的名称。

返回:

MultiIndex

另请参阅

MultiIndex.from_arrays

将数组列表转换为 MultiIndex。

MultiIndex.from_product

从可迭代对象的笛卡尔积中创建 MultiIndex。

MultiIndex.from_frame

从 DataFrame 创建 MultiIndex。

示例

>>> tuples = [(1, 'red'), (1, 'blue'),
...           (2, 'red'), (2, 'blue')]
>>> pd.MultiIndex.from_tuples(tuples, names=('number', 'color'))
MultiIndex([(1,  'red'),
 (1, 'blue'),
 (2,  'red'),
 (2, 'blue')],
 names=['number', 'color']) 

pandas.MultiIndex.from_product

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.from_product.html

classmethod MultiIndex.from_product(iterables, sortorder=None, names=_NoDefault.no_default)

从多个可迭代对象的笛卡尔积创建 MultiIndex。

参数:

iterableslist / 可迭代对象序列

每个可迭代对象都具有索引每个级别的唯一标签。

sortorderint 或 None

排序程度(必须按该级别的字典顺序排序)。

nameslist / 字符串序列,可选

索引级别的名称。如果未显式提供,则名称将从可迭代对象的元素中推断出来,如果元素具有 name 属性。

返回:

MultiIndex

另请参阅

MultiIndex.from_arrays

将数组列表转换为 MultiIndex。

MultiIndex.from_tuples

将元组列表转换为 MultiIndex。

MultiIndex.from_frame

从 DataFrame 创建 MultiIndex。

示例

>>> numbers = [0, 1, 2]
>>> colors = ['green', 'purple']
>>> pd.MultiIndex.from_product([numbers, colors],
...                            names=['number', 'color'])
MultiIndex([(0,  'green'),
 (0, 'purple'),
 (1,  'green'),
 (1, 'purple'),
 (2,  'green'),
 (2, 'purple')],
 names=['number', 'color']) 

pandas.MultiIndex.from_frame

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.from_frame.html

classmethod MultiIndex.from_frame(df, sortorder=None, names=None)

从 DataFrame 构造 MultiIndex。

参数:

dfDataFrame

待转换为 MultiIndex 的 DataFrame。

sortorder整数,可选

排序级别(必须按照该级别的词典顺序排序)。

names类似列表,可选

如果未提供名称,则使用列名,或者如果列是 MultiIndex,则使用列名的元组。如果是序列,则使用给定序列覆盖名称。

返回:

MultiIndex

给定 DataFrame 的 MultiIndex 表示。

也可参见

MultiIndex.from_arrays

将数组列表转换为 MultiIndex。

MultiIndex.from_tuples

将元组列表转换为 MultiIndex。

MultiIndex.from_product

从可迭代对象的笛卡尔积构造 MultiIndex。

示例

>>> df = pd.DataFrame([['HI', 'Temp'], ['HI', 'Precip'],
...                    ['NJ', 'Temp'], ['NJ', 'Precip']],
...                   columns=['a', 'b'])
>>> df
 a       b
0    HI    Temp
1    HI  Precip
2    NJ    Temp
3    NJ  Precip 
>>> pd.MultiIndex.from_frame(df)
MultiIndex([('HI',   'Temp'),
 ('HI', 'Precip'),
 ('NJ',   'Temp'),
 ('NJ', 'Precip')],
 names=['a', 'b']) 

使用显式名称,而不是列名

>>> pd.MultiIndex.from_frame(df, names=['state', 'observation'])
MultiIndex([('HI',   'Temp'),
 ('HI', 'Precip'),
 ('NJ',   'Temp'),
 ('NJ', 'Precip')],
 names=['state', 'observation']) 

pandas.MultiIndex.names

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.names.html

property MultiIndex.names

多重索引中级别的名称。

示例

>>> mi = pd.MultiIndex.from_arrays(
... [[1, 2], [3, 4], [5, 6]], names=['x', 'y', 'z'])
>>> mi
MultiIndex([(1, 3, 5),
 (2, 4, 6)],
 names=['x', 'y', 'z'])
>>> mi.names
FrozenList(['x', 'y', 'z']) 

pandas.MultiIndex.levels

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.levels.html

MultiIndex.levels

多重索引的层级。

层级指的是多重索引中的不同层级或层次。在多重索引中,每个层级代表索引的一个不同维度或类别。

要访问层级,可以使用多重索引的 levels 属性,它返回一个 Index 对象的元组。每个 Index 对象代表多重索引中的一个层级,并包含该特定层级中找到的唯一值。

如果使用层级 A、B、C 创建了一个多重索引,并且使用它的 DataFrame 过滤掉了所有层级 C 的行,MultiIndex.levels 仍然会返回 A、B、C。

示例

>>> index = pd.MultiIndex.from_product([['mammal'],
...                                     ('goat', 'human', 'cat', 'dog')],
...                                    names=['Category', 'Animals'])
>>> leg_num = pd.DataFrame(data=(4, 2, 4, 4), index=index, columns=['Legs'])
>>> leg_num
 Legs
Category Animals
mammal   goat        4
 human       2
 cat         4
 dog         4 
>>> leg_num.index.levels
FrozenList([['mammal'], ['cat', 'dog', 'goat', 'human']]) 

即使使用多重索引的 DataFrame 不再包含所有层级,多重索引的层级也不会改变。看看“human”不在 DataFrame 中,但它仍然在层级中:

>>> large_leg_num = leg_num[leg_num.Legs > 2]
>>> large_leg_num
 Legs
Category Animals
mammal   goat        4
 cat         4
 dog         4 
>>> large_leg_num.index.levels
FrozenList([['mammal'], ['cat', 'dog', 'goat', 'human']]) 

pandas.MultiIndex.codes

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.codes.html

property MultiIndex.codes

pandas.MultiIndex.nlevels

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.nlevels.html

property MultiIndex.nlevels

多级索引中的整数级别。

示例

>>> mi = pd.MultiIndex.from_arrays([['a'], ['b'], ['c']])
>>> mi
MultiIndex([('a', 'b', 'c')],
 )
>>> mi.nlevels
3 

pandas.MultiIndex.levshape

pandas.pydata.org/docs/reference/api/pandas.MultiIndex.levshape.html

property MultiIndex.levshape

一个包含每个层级长度的元组。

示例

>>> mi = pd.MultiIndex.from_arrays([['a'], ['b'], ['c']])
>>> mi
MultiIndex([('a', 'b', 'c')],
 )
>>> mi.levshape
(1, 1, 1) 

pandas.MultiIndex.dtypes

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.dtypes.html

MultiIndex.dtypes

返回基础 MultiIndex 的数据类型作为 Series。

示例

>>> idx = pd.MultiIndex.from_product([(0, 1, 2), ('green', 'purple')],
...                                  names=['number', 'color'])
>>> idx
MultiIndex([(0,  'green'),
 (0, 'purple'),
 (1,  'green'),
 (1, 'purple'),
 (2,  'green'),
 (2, 'purple')],
 names=['number', 'color'])
>>> idx.dtypes
number     int64
color     object
dtype: object 

pandas.MultiIndex.set_levels

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.set_levels.html

MultiIndex.set_levels(levels, *, level=None, verify_integrity=True)

在 MultiIndex 上设置新的级别。默认返回新索引。

参数:

levels序列或序列列表

要应用的新级别。

levelint、级别名称或 int/级别名称序列(默认为 None)

要设置的级别(所有级别为 None)。

verify_integritybool,默认为 True

如果为 True,则检查级别和代码是否兼容。

返回:

MultiIndex

示例

>>> idx = pd.MultiIndex.from_tuples(
...     [
...         (1, "one"),
...         (1, "two"),
...         (2, "one"),
...         (2, "two"),
...         (3, "one"),
...         (3, "two")
...     ],
...     names=["foo", "bar"]
... )
>>> idx
MultiIndex([(1, 'one'),
 (1, 'two'),
 (2, 'one'),
 (2, 'two'),
 (3, 'one'),
 (3, 'two')],
 names=['foo', 'bar']) 
>>> idx.set_levels([['a', 'b', 'c'], [1, 2]])
MultiIndex([('a', 1),
 ('a', 2),
 ('b', 1),
 ('b', 2),
 ('c', 1),
 ('c', 2)],
 names=['foo', 'bar'])
>>> idx.set_levels(['a', 'b', 'c'], level=0)
MultiIndex([('a', 'one'),
 ('a', 'two'),
 ('b', 'one'),
 ('b', 'two'),
 ('c', 'one'),
 ('c', 'two')],
 names=['foo', 'bar'])
>>> idx.set_levels(['a', 'b'], level='bar')
MultiIndex([(1, 'a'),
 (1, 'b'),
 (2, 'a'),
 (2, 'b'),
 (3, 'a'),
 (3, 'b')],
 names=['foo', 'bar']) 

如果传递给 set_levels() 的任何级别超过现有长度,则将该参数的所有值存储在 MultiIndex 级别中,尽管在 MultiIndex 输出中,这些值将被截断。

>>> idx.set_levels([['a', 'b', 'c'], [1, 2, 3, 4]], level=[0, 1])
MultiIndex([('a', 1),
 ('a', 2),
 ('b', 1),
 ('b', 2),
 ('c', 1),
 ('c', 2)],
 names=['foo', 'bar'])
>>> idx.set_levels([['a', 'b', 'c'], [1, 2, 3, 4]], level=[0, 1]).levels
FrozenList([['a', 'b', 'c'], [1, 2, 3, 4]]) 

pandas.MultiIndex.set_codes

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.set_codes.html

MultiIndex.set_codes(codes, *, level=None, verify_integrity=True)

在 MultiIndex 上设置新的代码。默认返回新索引。

参数:

codes 序列或序列的列表

要应用的新代码。

level 整数,级别名称,或整数/级别名称的序列(默认为 None)

要设置的级别(如果要设置所有级别,则为 None)。

verify_integrity 布尔值,默认为 True

如果为 True,则检查级别和代码是否兼容。

返回:

新索引(与调用者相同类型和类等)或 None

与调用者相同类型,如果inplace=True则为 None。

示例

>>> idx = pd.MultiIndex.from_tuples(
...     [(1, "one"), (1, "two"), (2, "one"), (2, "two")], names=["foo", "bar"]
... )
>>> idx
MultiIndex([(1, 'one'),
 (1, 'two'),
 (2, 'one'),
 (2, 'two')],
 names=['foo', 'bar']) 
>>> idx.set_codes([[1, 0, 1, 0], [0, 0, 1, 1]])
MultiIndex([(2, 'one'),
 (1, 'one'),
 (2, 'two'),
 (1, 'two')],
 names=['foo', 'bar'])
>>> idx.set_codes([1, 0, 1, 0], level=0)
MultiIndex([(2, 'one'),
 (1, 'two'),
 (2, 'one'),
 (1, 'two')],
 names=['foo', 'bar'])
>>> idx.set_codes([0, 0, 1, 1], level='bar')
MultiIndex([(1, 'one'),
 (1, 'one'),
 (2, 'two'),
 (2, 'two')],
 names=['foo', 'bar'])
>>> idx.set_codes([[1, 0, 1, 0], [0, 0, 1, 1]], level=[0, 1])
MultiIndex([(2, 'one'),
 (1, 'one'),
 (2, 'two'),
 (1, 'two')],
 names=['foo', 'bar']) 

pandas.MultiIndex.to_flat_index

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.to_flat_index.html

MultiIndex.to_flat_index()

将 MultiIndex 转换为包含级别值的元组索引。

返回:

pd.Index

用元组表示的 MultiIndex 数据的索引。

另请参阅

MultiIndex.from_tuples

将平面索引转换回 MultiIndex。

注意

如果被调用者不是 MultiIndex,则此方法将简单地返回调用者。

示例

>>> index = pd.MultiIndex.from_product(
...     [['foo', 'bar'], ['baz', 'qux']],
...     names=['a', 'b'])
>>> index.to_flat_index()
Index([('foo', 'baz'), ('foo', 'qux'),
 ('bar', 'baz'), ('bar', 'qux')],
 dtype='object') 

pandas.MultiIndex.to_frame

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.to_frame.html

MultiIndex.to_frame(index=True, name=_NoDefault.no_default, allow_duplicates=False)

创建一个将 MultiIndex 的级别作为列的 DataFrame。

列的顺序由 DataFrame 构造函数确定,数据为字典。

参数:

index布尔值,默认为 True

将返回的 DataFrame 的索引设置为原始的 MultiIndex。

name列表 / 字符串序列,可选

传递的名称应该替换索引级别的名称。

allow_duplicates布尔值,可选,默认为 False

允许创建重复的列标签。

自 1.5.0 版本新增。

返回值:

DataFrame

另请参见

DataFrame

二维、大小可变、可能异构的表格数据。

示例

>>> mi = pd.MultiIndex.from_arrays([['a', 'b'], ['c', 'd']])
>>> mi
MultiIndex([('a', 'c'),
 ('b', 'd')],
 ) 
>>> df = mi.to_frame()
>>> df
 0  1
a c  a  c
b d  b  d 
>>> df = mi.to_frame(index=False)
>>> df
 0  1
0  a  c
1  b  d 
>>> df = mi.to_frame(name=['x', 'y'])
>>> df
 x  y
a c  a  c
b d  b  d 

pandas.MultiIndex.sortlevel

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.sortlevel.html

MultiIndex.sortlevel(level=0, ascending=True, sort_remaining=True, na_position='first')

在所请求的级别上对 MultiIndex 进行排序。

结果将尊重该级别上相关因子的原始顺序。

参数:

level类似列表,int 或 str, 默认为 0

如果给定了字符串,必须是级别的名称。 如果类似列表必须是级别的名称或 int。

ascendingbool, 默认为 True

False 为降序排序。 也可以是一个列表以指定有向顺序。

sort_remaining在级别之后对剩余级别进行排序

na_position,默认为 ‘first’

参数 ‘first’ 将 NaN 放在开头,‘last’ 将 NaN 放在末尾。

新版本 2.1.0 中新增。

返回:

sorted_indexpd.MultiIndex

结果索引。

indexernp.ndarray[np.intp]

输出值在原始索引中的索引。

示例

>>> mi = pd.MultiIndex.from_arrays([[0, 0], [2, 1]])
>>> mi
MultiIndex([(0, 2),
 (0, 1)],
 ) 
>>> mi.sortlevel()
(MultiIndex([(0, 1),
 (0, 2)],
 ), array([1, 0])) 
>>> mi.sortlevel(sort_remaining=False)
(MultiIndex([(0, 2),
 (0, 1)],
 ), array([0, 1])) 
>>> mi.sortlevel(1)
(MultiIndex([(0, 1),
 (0, 2)],
 ), array([1, 0])) 
>>> mi.sortlevel(1, ascending=False)
(MultiIndex([(0, 2),
 (0, 1)],
 ), array([0, 1])) 

pandas.MultiIndex.droplevel

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.droplevel.html

MultiIndex.droplevel(level=0)

返回删除请求级别的索引。

如果结果索引只剩下 1 个级别,则结果将是索引类型,而不是多重索引。原始索引不会被就地修改。

参数:

levelint、str 或类似列表,默认为 0

如果给定一个字符串,则必须是级别的名称。如果是类似列表,则元素必须是级别的名称或索引。

返回:

索引或多重索引

示例

>>> mi = pd.MultiIndex.from_arrays(
... [[1, 2], [3, 4], [5, 6]], names=['x', 'y', 'z'])
>>> mi
MultiIndex([(1, 3, 5),
 (2, 4, 6)],
 names=['x', 'y', 'z']) 
>>> mi.droplevel()
MultiIndex([(3, 5),
 (4, 6)],
 names=['y', 'z']) 
>>> mi.droplevel(2)
MultiIndex([(1, 3),
 (2, 4)],
 names=['x', 'y']) 
>>> mi.droplevel('z')
MultiIndex([(1, 3),
 (2, 4)],
 names=['x', 'y']) 
>>> mi.droplevel(['x', 'y'])
Index([5, 6], dtype='int64', name='z') 

pandas.MultiIndex.swaplevel 方法。

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.swaplevel.html

MultiIndex.swaplevel(i=-2, j=-1)

将第 i 级别与第 j 级别交换。

调用此方法不会改变值的排序。

参数:

i:整数,字符串,默认值为-2。

要交换的索引的第一级别。可以将级别名称作为字符串传递。参数类型可以混合使用。

j:整数,字符串,默认值为-1。

要交换的索引的第二级别。可以将级别名称作为字符串传递。参数类型可以混合使用。

返回:

多级索引。

新的多级索引。

另请参见。

Series.swaplevel方法。

在多级索引中交换第 i 和第 j 级别。

DataFrame.swaplevel方法。

在特定轴上交换多级索引中的第 i 和第 j 级别。

示例。

>>> mi = pd.MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
...                    codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
>>> mi
MultiIndex([('a', 'bb'),
 ('a', 'aa'),
 ('b', 'bb'),
 ('b', 'aa')],
 )
>>> mi.swaplevel(0, 1)
MultiIndex([('bb', 'a'),
 ('aa', 'a'),
 ('bb', 'b'),
 ('aa', 'b')],
 ) 

pandas.MultiIndex.reorder_levels

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.reorder_levels.html

MultiIndex.reorder_levels(order)

使用输入顺序重新排列级别。可能不会删除或重复级别。

参数:

order列表中的整数或字符串

表示新级别顺序的列表。通过数字(位置)或键(标签)引用级别。

返回:

MultiIndex

示例

>>> mi = pd.MultiIndex.from_arrays([[1, 2], [3, 4]], names=['x', 'y'])
>>> mi
MultiIndex([(1, 3),
 (2, 4)],
 names=['x', 'y']) 
>>> mi.reorder_levels(order=[1, 0])
MultiIndex([(3, 1),
 (4, 2)],
 names=['y', 'x']) 
>>> mi.reorder_levels(order=['y', 'x'])
MultiIndex([(3, 1),
 (4, 2)],
 names=['y', 'x']) 

pandas.MultiIndex.remove_unused_levels

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.remove_unused_levels.html

MultiIndex.remove_unused_levels()

从当前 MultiIndex 创建新的 MultiIndex,移除未使用的级别。

未使用的级别表示在标签中没有表达出来的级别。生成的 MultiIndex 将具有相同的外观,意味着相同的 .values 和顺序。它还将与原始 MultiIndex 的 .equals()。

返回:

MultiIndex

示例

>>> mi = pd.MultiIndex.from_product([range(2), list('ab')])
>>> mi
MultiIndex([(0, 'a'),
 (0, 'b'),
 (1, 'a'),
 (1, 'b')],
 ) 
>>> mi[2:]
MultiIndex([(1, 'a'),
 (1, 'b')],
 ) 

第一级中的 0 未表示,可以被移除。

>>> mi2 = mi[2:].remove_unused_levels()
>>> mi2.levels
FrozenList([[1], ['a', 'b']]) 

pandas.MultiIndex.drop

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.drop.html

MultiIndex.drop(codes, level=None, errors='raise')

创建一个新的pandas.MultiIndex,删除传递的代码列表。

参数:

codes 数组样式

当未指定level时,必须是元组列表。

level 整数或级别名称,默认为 None

errors 字符串,默认为 'raise'

返回:

MultiIndex

示例

>>> idx = pd.MultiIndex.from_product([(0, 1, 2), ('green', 'purple')],
...                                  names=["number", "color"])
>>> idx
MultiIndex([(0,  'green'),
 (0, 'purple'),
 (1,  'green'),
 (1, 'purple'),
 (2,  'green'),
 (2, 'purple')],
 names=['number', 'color'])
>>> idx.drop([(1, 'green'), (2, 'purple')])
MultiIndex([(0,  'green'),
 (0, 'purple'),
 (1, 'purple'),
 (2,  'green')],
 names=['number', 'color']) 

我们还可以从特定级别删除。

>>> idx.drop('green', level='color')
MultiIndex([(0, 'purple'),
 (1, 'purple'),
 (2, 'purple')],
 names=['number', 'color']) 
>>> idx.drop([1, 2], level=0)
MultiIndex([(0,  'green'),
 (0, 'purple')],
 names=['number', 'color']) 

pandas.MultiIndex.copy

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.copy.html

MultiIndex.copy(names=None, deep=False, name=None)

复制此对象。

可以传递 Names、dtype、levels 和 codes,并将在新副本上设置。

参数:

names序列,可选

deep布尔值,默认为 False

name标签

为了与一维索引兼容而保留。不应使用。

返回:

MultiIndex

注解

在大多数情况下,与使用 deep 没有功能上的区别,但如果传递了 deep,它将尝试深度复制。这在大型 MultiIndex 对象上可能是昂贵的。

示例

>>> mi = pd.MultiIndex.from_arrays([['a'], ['b'], ['c']])
>>> mi
MultiIndex([('a', 'b', 'c')],
 )
>>> mi.copy()
MultiIndex([('a', 'b', 'c')],
 ) 

pandas.MultiIndex.append

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.append.html

MultiIndex.append(other)

将一组索引选项连接在一起。

参数:

other索引或索引的列表/元组

返回:

索引

组合后的索引。

示例

>>> mi = pd.MultiIndex.from_arrays([['a'], ['b']])
>>> mi
MultiIndex([('a', 'b')],
 )
>>> mi.append(mi)
MultiIndex([('a', 'b'), ('a', 'b')],
 ) 

pandas.MultiIndex.truncate

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.truncate.html

MultiIndex.truncate(before=None, after=None)

位于两个标签/元组之间的切片索引,返回新的 MultiIndex。

参数:

before标签或元组,可以是部分。默认为 None。

None 默认为起始。

after标签或元组,可以是部分。默认为 None。

None 默认为末尾。

返回:

MultiIndex

截断后的 MultiIndex。

示例

>>> mi = pd.MultiIndex.from_arrays([['a', 'b', 'c'], ['x', 'y', 'z']])
>>> mi
MultiIndex([('a', 'x'), ('b', 'y'), ('c', 'z')],
 )
>>> mi.truncate(before='a', after='b')
MultiIndex([('a', 'x'), ('b', 'y')],
 ) 

pandas.MultiIndex.get_loc

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.get_loc.html

MultiIndex.get_loc(key)

获取标签或标签元组的位置。

位置以整数/切片或布尔掩码形式返回。

参数:

key标签或标签元组(每个级别一个)

返回:

整数、切片对象或布尔掩码

如果键超出了 lexsort 深度,则返回可能是一个布尔掩码数组,否则始终是一个切片或整数。

另请参见

Index.get_loc

(单级)索引的 get_loc 方法。

MultiIndex.slice_locs

给定起始标签和结束标签,获取切片位置。

MultiIndex.get_locs

获取标签/切片/列表/掩码或这些序列的位置。

注意事项

键不能是切片、相同级别标签的列表、布尔掩码或这些的序列。如果要使用这些,请改用MultiIndex.get_locs()

示例

>>> mi = pd.MultiIndex.from_arrays([list('abb'), list('def')]) 
>>> mi.get_loc('b')
slice(1, 3, None) 
>>> mi.get_loc(('b', 'e'))
1 

pandas.MultiIndex.get_locs

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.get_locs.html

MultiIndex.get_locs(seq)

获取标签序列的位置。

参数:

序列标签、切片、列表、掩码或这些的序列

对于每个级别,您应该使用上面的一个。如果一个级别不应该使用,请将其设置为slice(None)

返回值:

numpy.ndarray

适合传递给 iloc 的整数的 NumPy 数组。

参见

MultiIndex.get_loc

获取标签或标签元组的位置。

MultiIndex.slice_locs

给定起始标签和结束标签,获取切片位置。

示例

>>> mi = pd.MultiIndex.from_arrays([list('abb'), list('def')]) 
>>> mi.get_locs('b')  
array([1, 2], dtype=int64) 
>>> mi.get_locs([slice(None), ['e', 'f']])  
array([1, 2], dtype=int64) 
>>> mi.get_locs([[True, False, True], slice('e', 'f')])  
array([2], dtype=int64) 

pandas.MultiIndex.get_loc_level

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.get_loc_level.html

MultiIndex.get_loc_level(key, level=0, drop_level=True)

获取请求标签/级别的位置和切片索引。

参数:

标签或标签序列

level整数/级别名称或其列表,可选

drop_level布尔值,默认为 True

如果为False,结果索引将不会删除任何级别。

返回:

元组

一个包含元素的 2 元组:

元素 0:整数、切片对象或布尔数组。

元素 1:结果切片的多重索引/索引。如果键包含所有级别,则为None

另请参阅

MultiIndex.get_loc

获取标签或标签元组的位置。

MultiIndex.get_locs

获取标签/切片/列表/掩码或其序列的位置。

示例

>>> mi = pd.MultiIndex.from_arrays([list('abb'), list('def')],
...                                names=['A', 'B']) 
>>> mi.get_loc_level('b')
(slice(1, 3, None), Index(['e', 'f'], dtype='object', name='B')) 
>>> mi.get_loc_level('e', level='B')
(array([False,  True, False]), Index(['b'], dtype='object', name='A')) 
>>> mi.get_loc_level(['b', 'e'])
(1, None) 

pandas.MultiIndex.get_indexer

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.get_indexer.html

MultiIndex.get_indexer(target, method=None, limit=None, tolerance=None)

计算当前索引给定目标值时的索引和掩码。

然后应将索引器用作 ndarray.take 的输入,以将当前数据对齐到新索引。

参数:

target索引

method,可选

  • 默认:仅精确匹配。

  • pad / ffill:如果没有精确匹配,则查找前一个索引值。

  • backfill / bfill:如果没有精确匹配,则使用下一个索引值。

  • nearest:如果没有精确匹配,则使用最接近的索引值。相同距离的情况下,通过选择较大的索引值来打破平局。

limitint,可选

target中要匹配的最大连续标签数。

tolerance(可选)

对于不精确匹配,原始标签和新标签之间的最大距离。匹配位置的索引值必须满足等式abs(index[indexer] - target) <= tolerance

容差可以是标量值,将相同的容差应用于所有值,也可以是类似列表的值,对每个元素应用可变容差。类似列表包括列表、元组、数组、Series,且必须与索引的大小完全匹配,并且其 dtype 必须与索引的类型完全匹配。

返回:

np.ndarray[np.intp]

从 0 到 n-1 的整数表示这些位置上的索引与相应的目标值匹配。目标中的缺失值由-1 标记。

注释

对于不匹配的值返回-1,详细说明请参见下面的示例。

示例

>>> index = pd.Index(['c', 'a', 'b'])
>>> index.get_indexer(['a', 'b', 'x'])
array([ 1,  2, -1]) 

注意返回值是一个包含index位置的数组,而x由-1 标记,因为它不在index中。

pandas.MultiIndex.get_level_values

原文:pandas.pydata.org/docs/reference/api/pandas.MultiIndex.get_level_values.html

MultiIndex.get_level_values(level)

返回请求级别的标签值向量。

返回向量的长度等于索引的长度。

参数:

level 整数或字符串

level 是 MultiIndex 中级别的整数位置或级别的名称。

返回:

索引

值是此 MultiIndex 的级别转换为单个 Index(或其子类)。

注意

如果级别包含缺失值,则结果可能被转换为 float,缺失值指定为 NaN。这是因为级别被转换为常规的 Index

示例

创建 MultiIndex:

>>> mi = pd.MultiIndex.from_arrays((list('abc'), list('def')))
>>> mi.names = ['level_1', 'level_2'] 

通过提供整数或名称作为级别来获取级别值:

>>> mi.get_level_values(0)
Index(['a', 'b', 'c'], dtype='object', name='level_1')
>>> mi.get_level_values('level_2')
Index(['d', 'e', 'f'], dtype='object', name='level_2') 

如果级别包含缺失值,则级别的返回类型可能被转换为 float

>>> pd.MultiIndex.from_arrays([[1, None, 2], [3, 4, 5]]).dtypes
level_0    int64
level_1    int64
dtype: object
>>> pd.MultiIndex.from_arrays([[1, None, 2], [3, 4, 5]]).get_level_values(0)
Index([1.0, nan, 2.0], dtype='float64') 

pandas.IndexSlice

原文:pandas.pydata.org/docs/reference/api/pandas.IndexSlice.html

pandas.IndexSlice = <pandas.core.indexing._IndexSlice object>

创建一个对象,更轻松地执行多级索引切片。

另请参阅

MultiIndex.remove_unused_levels

具有无未使用级别的新 MultiIndex。

注意事项

参见定义级别以获取有关切片多级索引的更多信息。

示例

>>> midx = pd.MultiIndex.from_product([['A0','A1'], ['B0','B1','B2','B3']])
>>> columns = ['foo', 'bar']
>>> dfmi = pd.DataFrame(np.arange(16).reshape((len(midx), len(columns))),
...                     index=midx, columns=columns) 

使用默认的切片命令:

>>> dfmi.loc[(slice(None), slice('B0', 'B1')), :]
 foo  bar
 A0 B0    0    1
 B1    2    3
 A1 B0    8    9
 B1   10   11 

使用 IndexSlice 类进行更直观的命令:

>>> idx = pd.IndexSlice
>>> dfmi.loc[idx[:, 'B0':'B1'], :]
 foo  bar
 A0 B0    0    1
 B1    2    3
 A1 B0    8    9
 B1   10   11 

pandas.DatetimeIndex

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.html

class pandas.DatetimeIndex(data=None, freq=_NoDefault.no_default, tz=_NoDefault.no_default, normalize=_NoDefault.no_default, closed=_NoDefault.no_default, ambiguous='raise', dayfirst=False, yearfirst=False, dtype=None, copy=False, name=None)

不可变 ndarray 类型的 datetime64 数据。

在内部表示为 int64,可以封装为继承自 datetime 并携带元数据的 Timestamp 对象。

从 2.0.0 版本开始更改:各种数值日期/时间属性(daymonthyear 等)现在具有 dtype int32。以前它们的 dtype 为 int64

参数:

data类似数组(1 维)

用于构建索引的类似日期时间的数据。

freq字符串或 pandas 偏移对象,可选

pandas 日期偏移字符串或相应的对象之一。可以传递字符串 ‘infer’ 以在创建时设置索引的频率为推断的频率。

tzpytz.timezone 或 dateutil.tz.tzfile 或 datetime.tzinfo 或字符串

设置数据的时区。

normalize布尔类型,默认为 False

在生成日期范围之前将开始/结束日期标准化为午夜。

自 2.1.0 版本后不推荐使用。

closed,可选

设置是否包含位于边界上的起始点和结束点。默认情况下包含两端的边界点。

自 2.1.0 版本后不推荐使用。

ambiguous‘infer’,布尔类型的 ndarray,‘NaT’,默认为 ‘raise’

由于 DST 导致时钟倒退,可能会出现模糊时间。例如,在中欧时间(UTC+01)中,从 03:00 DST 到 02:00 非 DST 时,当地时间 02:30:00 同时发生在 00:30:00 UTC 和 01:30:00 UTC。在这种情况下,模糊参数决定如何处理模糊时间。

  • ‘infer’ 将尝试根据顺序推断秋季 DST 转换小时。

  • 一个布尔类型的 ndarray,其中 True 表示 DST 时间,False 表示非 DST 时间(请注意,此标志仅适用于模糊时间)。

  • 当存在模糊时间时,‘NaT’ 将返回 NaT。

  • 如果存在模糊时间,则 ‘raise’ 将引发 AmbiguousTimeError。

dayfirst布尔类型,默认为 False

如果为 True,则使用日期优先顺序解析数据中的日期。

yearfirst布尔类型,默认为 False

如果为 True,则使用年份优先顺序解析数据中的日期。

dtypenumpy.dtype 或 DatetimeTZDtype 或字符串,默认为 None

请注意,唯一允许的 NumPy dtype 是 datetime64[ns]。

copy布尔类型,默认为 False

复制输入 ndarray。

name标签,默认为 None

要存储在索引中的名称。

另请参阅

Index

pandas 的基本索引类型。

TimedeltaIndex

timedelta64 数据的索引。

PeriodIndex

Period 数据的索引。

to_datetime

将参数转换为日期时间。

date_range

创建固定频率的日期时间索引。

注意事项

要了解更多关于频率字符串的信息,请参阅此链接

示例

>>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
>>> idx
DatetimeIndex(['2020-01-01 10:00:00+00:00', '2020-02-01 11:00:00+00:00'],
dtype='datetime64[ns, UTC]', freq=None) 

属性

year 日期时间的年份部分。
month 月份,一月=1,十二月=12。
day 日期时间的日期部分。
hour 日期时间的小时部分。
minute 日期时间的分钟部分。
second 日期时间的秒部分。
microsecond 日期时间的微秒部分。
nanosecond 日期时间的纳秒部分。
date 返回带有时区的 python datetime.date 对象的 numpy 数组。
time 返回带有时区的 datetime.time 对象的 numpy 数组。
timetz 返回带有时区的 datetime.time 对象的 numpy 数组。
dayofyear 年份中的第几天。
day_of_year 年份中的第几天。
dayofweek 星期几,星期一=0,星期日=6。
day_of_week 星期几,星期一=0,星期日=6。
weekday 一周中的星期几,星期一为 0,星期日为 6。
quarter 日期所在季度。
tz 返回时区信息。
freqstr 如果设置了频率对象,则返回字符串形式的频率,否则返回 None。
is_month_start 表示日期是否为月初。
is_month_end 表示日期是否为月末。
is_quarter_start 表示日期是否为季度的第一天。
is_quarter_end 表示日期是否为季度末。
is_year_start 表示日期是否为年初。
is_year_end 表示日期是否为年末。
is_leap_year 如果日期属于闰年,则为真。
inferred_freq 尝试返回由 infer_freq 生成的表示频率的字符串。
freq

方法

normalize(*args, **kwargs) 将时间转换为午夜。
strftime(date_format) 使用指定的日期格式转换为索引。
snap([freq]) 将时间戳调整到最接近的频率。
tz_convert(tz) 将具有时区信息的日期数组/索引从一个时区转换为另一个时区。
tz_localize(tz[, ambiguous, nonexistent]) 将时区无关的日期时间数组/索引本地化为时区感知的日期时间数组/索引。
round(*args, **kwargs) 对数据执行四舍五入操作,以指定的频率为准。
floor(*args, **kwargs) 对数据执行向下取整操作,以指定的频率为准。
ceil(*args, **kwargs) 对数据执行向上取整操作,以指定的频率为准。
to_period(*args, **kwargs) 将日期时间转换为特定频率的 PeriodArray/PeriodIndex。
to_pydatetime(*args, **kwargs) 返回一个由datetime.datetime对象组成的 ndarray。
to_series([index, name]) 创建一个 Series,其索引和值都等于索引键。
to_frame([index, name]) 创建一个包含索引的列的 DataFrame。
month_name(*args, **kwargs) 返回指定语言环境下的月份名称。
day_name(*args, **kwargs) 返回指定语言环境下的星期几名称。
mean(*[, skipna, axis]) 返回数组的平均值。
std(*args, **kwargs) 沿请求的轴返回样本标准差。

pandas.DatetimeIndex.year

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.year.html

property DatetimeIndex.year

日期时间的年份。

示例

>>> datetime_series = pd.Series(
...     pd.date_range("2000-01-01", periods=3, freq="YE")
... )
>>> datetime_series
0   2000-12-31
1   2001-12-31
2   2002-12-31
dtype: datetime64[ns]
>>> datetime_series.dt.year
0    2000
1    2001
2    2002
dtype: int32 

pandas.DatetimeIndex.month

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.month.html

property DatetimeIndex.month

月份,一月为 1,十二月为 12。

示例

>>> datetime_series = pd.Series(
...     pd.date_range("2000-01-01", periods=3, freq="ME")
... )
>>> datetime_series
0   2000-01-31
1   2000-02-29
2   2000-03-31
dtype: datetime64[ns]
>>> datetime_series.dt.month
0    1
1    2
2    3
dtype: int32 

pandas.DatetimeIndex.day

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.day.html

property DatetimeIndex.day

日期时间的日期。

示例

>>> datetime_series = pd.Series(
...     pd.date_range("2000-01-01", periods=3, freq="D")
... )
>>> datetime_series
0   2000-01-01
1   2000-01-02
2   2000-01-03
dtype: datetime64[ns]
>>> datetime_series.dt.day
0    1
1    2
2    3
dtype: int32 

pandas.DatetimeIndex.hour

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.hour.html

property DatetimeIndex.hour

时间的小时。

示例

>>> datetime_series = pd.Series(
...     pd.date_range("2000-01-01", periods=3, freq="h")
... )
>>> datetime_series
0   2000-01-01 00:00:00
1   2000-01-01 01:00:00
2   2000-01-01 02:00:00
dtype: datetime64[ns]
>>> datetime_series.dt.hour
0    0
1    1
2    2
dtype: int32 

pandas.DatetimeIndex.minute

pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.minute.html

property DatetimeIndex.minute

时间的分钟。

例子

>>> datetime_series = pd.Series(
...     pd.date_range("2000-01-01", periods=3, freq="min")
... )
>>> datetime_series
0   2000-01-01 00:00:00
1   2000-01-01 00:01:00
2   2000-01-01 00:02:00
dtype: datetime64[ns]
>>> datetime_series.dt.minute
0    0
1    1
2    2
dtype: int32 

pandas.DatetimeIndex.second

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.second.html

property DatetimeIndex.second

时间日期的秒数。

示例

>>> datetime_series = pd.Series(
...     pd.date_range("2000-01-01", periods=3, freq="s")
... )
>>> datetime_series
0   2000-01-01 00:00:00
1   2000-01-01 00:00:01
2   2000-01-01 00:00:02
dtype: datetime64[ns]
>>> datetime_series.dt.second
0    0
1    1
2    2
dtype: int32 

pandas.DatetimeIndex.microsecond

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.microsecond.html

property DatetimeIndex.microsecond

日期时间的微秒。

Examples

>>> datetime_series = pd.Series(
...     pd.date_range("2000-01-01", periods=3, freq="us")
... )
>>> datetime_series
0   2000-01-01 00:00:00.000000
1   2000-01-01 00:00:00.000001
2   2000-01-01 00:00:00.000002
dtype: datetime64[ns]
>>> datetime_series.dt.microsecond
0       0
1       1
2       2
dtype: int32 

pandas.DatetimeIndex.nanosecond

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.nanosecond.html

property DatetimeIndex.nanosecond

日期时间的纳秒部分。

示例

>>> datetime_series = pd.Series(
...     pd.date_range("2000-01-01", periods=3, freq="ns")
... )
>>> datetime_series
0   2000-01-01 00:00:00.000000000
1   2000-01-01 00:00:00.000000001
2   2000-01-01 00:00:00.000000002
dtype: datetime64[ns]
>>> datetime_series.dt.nanosecond
0       0
1       1
2       2
dtype: int32 

pandas.DatetimeIndex.date

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.date.html

property DatetimeIndex.date

返回由 Python datetime.date 对象组成的 NumPy 数组。

即,没有时间和时区信息的时间戳的日期部分。

例子

对于 Series:

>>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
>>> s = pd.to_datetime(s)
>>> s
0   2020-01-01 10:00:00+00:00
1   2020-02-01 11:00:00+00:00
dtype: datetime64[ns, UTC]
>>> s.dt.date
0    2020-01-01
1    2020-02-01
dtype: object 

对于 DatetimeIndex:

>>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00",
...                         "2/1/2020 11:00:00+00:00"])
>>> idx.date
array([datetime.date(2020, 1, 1), datetime.date(2020, 2, 1)], dtype=object) 

pandas.DatetimeIndex.time

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.time.html

property DatetimeIndex.time

返回 datetime.time 对象的 numpy 数组。

时间戳的时间部分。

示例

对于 Series:

>>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
>>> s = pd.to_datetime(s)
>>> s
0   2020-01-01 10:00:00+00:00
1   2020-02-01 11:00:00+00:00
dtype: datetime64[ns, UTC]
>>> s.dt.time
0    10:00:00
1    11:00:00
dtype: object 

对于 DatetimeIndex:

>>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00",
...                         "2/1/2020 11:00:00+00:00"])
>>> idx.time
array([datetime.time(10, 0), datetime.time(11, 0)], dtype=object) 

pandas.DatetimeIndex.timetz

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.timetz.html

property DatetimeIndex.timetz

返回带有时区的datetime.time对象的 numpy 数组。

时间戳的时间部分。

示例

对于 Series:

>>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
>>> s = pd.to_datetime(s)
>>> s
0   2020-01-01 10:00:00+00:00
1   2020-02-01 11:00:00+00:00
dtype: datetime64[ns, UTC]
>>> s.dt.timetz
0    10:00:00+00:00
1    11:00:00+00:00
dtype: object 

对于 DatetimeIndex:

>>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00",
...                         "2/1/2020 11:00:00+00:00"])
>>> idx.timetz
array([datetime.time(10, 0, tzinfo=datetime.timezone.utc),
datetime.time(11, 0, tzinfo=datetime.timezone.utc)], dtype=object) 

pandas.DatetimeIndex.dayofyear

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.dayofyear.html

property DatetimeIndex.dayofyear

一年中的第几天。

示例

对于 Series:

>>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
>>> s = pd.to_datetime(s)
>>> s
0   2020-01-01 10:00:00+00:00
1   2020-02-01 11:00:00+00:00
dtype: datetime64[ns, UTC]
>>> s.dt.dayofyear
0    1
1   32
dtype: int32 

对于 DatetimeIndex:

>>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00",
...                         "2/1/2020 11:00:00+00:00"])
>>> idx.dayofyear
Index([1, 32], dtype='int32') 

pandas.DatetimeIndex.day_of_year

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.day_of_year.html

property DatetimeIndex.day_of_year

年份中的序数日。

例子

对于 Series:

>>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
>>> s = pd.to_datetime(s)
>>> s
0   2020-01-01 10:00:00+00:00
1   2020-02-01 11:00:00+00:00
dtype: datetime64[ns, UTC]
>>> s.dt.dayofyear
0    1
1   32
dtype: int32 

对于 DatetimeIndex:

>>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00",
...                         "2/1/2020 11:00:00+00:00"])
>>> idx.dayofyear
Index([1, 32], dtype='int32') 

pandas.DatetimeIndex.dayofweek

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.dayofweek.html

property DatetimeIndex.dayofweek

星期几,星期一=0,星期日=6。

返回星期几。假设一周从星期一开始,用 0 表示,到星期日结束,用 6 表示。此方法适用于具有日期时间值的系列(使用 dt 访问器)或 DatetimeIndex。

返回:

系列或索引

包含表示星期几的整数。

另请参阅

Series.dt.dayofweek

别名。

Series.dt.weekday

别名。

Series.dt.day_name

返回星期几的名称。

示例

>>> s = pd.date_range('2016-12-31', '2017-01-08', freq='D').to_series()
>>> s.dt.dayofweek
2016-12-31    5
2017-01-01    6
2017-01-02    0
2017-01-03    1
2017-01-04    2
2017-01-05    3
2017-01-06    4
2017-01-07    5
2017-01-08    6
Freq: D, dtype: int32 

pandas.DatetimeIndex.day_of_week

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.day_of_week.html

property DatetimeIndex.day_of_week

一周的星期几,星期一=0,星期日=6。

返回星期几。假设星期从星期一开始,用 0 表示,到星期日结束,用 6 表示。此方法可用于具有日期时间值(使用 dt 访问器)或 DatetimeIndex 的 Series。

返回:

Series 或 Index

包含表示日期数字的整数。

另请参见

Series.dt.dayofweek

别名。

Series.dt.weekday

别名。

Series.dt.day_name

返回星期几的名称。

示例

>>> s = pd.date_range('2016-12-31', '2017-01-08', freq='D').to_series()
>>> s.dt.dayofweek
2016-12-31    5
2017-01-01    6
2017-01-02    0
2017-01-03    1
2017-01-04    2
2017-01-05    3
2017-01-06    4
2017-01-07    5
2017-01-08    6
Freq: D, dtype: int32 

pandas.DatetimeIndex.weekday

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.weekday.html

property DatetimeIndex.weekday

星期几,星期一为 0,星期日为 6。

返回星期几。假设一周从星期一开始,用 0 表示,以星期日结束,用 6 表示。此方法可用于具有日期时间值的 Series(使用 dt 访问器)或 DatetimeIndex。

返回:

Series 或 Index

包含整数,表示日期编号。

另请参阅

Series.dt.dayofweek

别名。

Series.dt.weekday

别名。

Series.dt.day_name

返回星期几的名称。

示例

>>> s = pd.date_range('2016-12-31', '2017-01-08', freq='D').to_series()
>>> s.dt.dayofweek
2016-12-31    5
2017-01-01    6
2017-01-02    0
2017-01-03    1
2017-01-04    2
2017-01-05    3
2017-01-06    4
2017-01-07    5
2017-01-08    6
Freq: D, dtype: int32 

pandas.DatetimeIndex.quarter

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.quarter.html

property DatetimeIndex.quarter

日期的季度。

示例

对于 Series:

>>> s = pd.Series(["1/1/2020 10:00:00+00:00", "4/1/2020 11:00:00+00:00"])
>>> s = pd.to_datetime(s)
>>> s
0   2020-01-01 10:00:00+00:00
1   2020-04-01 11:00:00+00:00
dtype: datetime64[ns, UTC]
>>> s.dt.quarter
0    1
1    2
dtype: int32 

对于 DatetimeIndex:

>>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00",
...                         "2/1/2020 11:00:00+00:00"])
>>> idx.quarter
Index([1, 1], dtype='int32') 

pandas.DatetimeIndex.tz

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.tz.html

property DatetimeIndex.tz

返回时区。

返回:

datetime.tzinfopytz.tzinfo.BaseTZInfodateutil.tz.tz.tzfileNone

当数组是时区无关的时候返回 None

例子

对于 Series:

>>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
>>> s = pd.to_datetime(s)
>>> s
0   2020-01-01 10:00:00+00:00
1   2020-02-01 11:00:00+00:00
dtype: datetime64[ns, UTC]
>>> s.dt.tz
datetime.timezone.utc 

对于 DatetimeIndex:

>>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00",
...                         "2/1/2020 11:00:00+00:00"])
>>> idx.tz
datetime.timezone.utc 

pandas.DatetimeIndex.freq

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.freq.html

property DatetimeIndex.freq

pandas.DatetimeIndex.freqstr

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.freqstr.html

property DatetimeIndex.freqstr

如果设置了频率,则返回频率对象作为字符串,否则返回 None。

示例

对于 DatetimeIndex:

>>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00"], freq="D")
>>> idx.freqstr
'D' 

如果有两个以上的点,则可以推断出频率:

>>> idx = pd.DatetimeIndex(["2018-01-01", "2018-01-03", "2018-01-05"],
...                        freq="infer")
>>> idx.freqstr
'2D' 

对于 PeriodIndex:

>>> idx = pd.PeriodIndex(["2023-1", "2023-2", "2023-3"], freq="M")
>>> idx.freqstr
'M' 

pandas.DatetimeIndex.is_month_start

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.is_month_start.html

property DatetimeIndex.is_month_start

表示日期是否为月初。

返回:

Series 或数组

对于 Series,返回一个带有布尔值的 Series。对于 DatetimeIndex,返回一个布尔数组。

另请参见

is_month_start

返回一个布尔值,指示日期是否为该月的第一天。

is_month_end

返回一个布尔值,指示日期是否为该月的最后一天。

示例

此方法在具有日期时间值的 Series 下的 .dt 访问器下可用,并直接在 DatetimeIndex 上可用。

>>> s = pd.Series(pd.date_range("2018-02-27", periods=3))
>>> s
0   2018-02-27
1   2018-02-28
2   2018-03-01
dtype: datetime64[ns]
>>> s.dt.is_month_start
0    False
1    False
2    True
dtype: bool
>>> s.dt.is_month_end
0    False
1    True
2    False
dtype: bool 
>>> idx = pd.date_range("2018-02-27", periods=3)
>>> idx.is_month_start
array([False, False, True])
>>> idx.is_month_end
array([False, True, False]) 

pandas.DatetimeIndex.is_month_end

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.is_month_end.html

property DatetimeIndex.is_month_end

指示日期是否为月末。

返回:

Series 或数组

对于 Series,返回一个带有布尔值的 Series。对于 DatetimeIndex,返回一个布尔数组。

另请参见

is_month_start

返回一个布尔值,指示日期是否为月初。

is_month_end

返回一个布尔值,指示日期是否为月末。

示例

该方法适用于具有日期时间值的 Series,使用.dt访问器,以及直接适用于 DatetimeIndex。

>>> s = pd.Series(pd.date_range("2018-02-27", periods=3))
>>> s
0   2018-02-27
1   2018-02-28
2   2018-03-01
dtype: datetime64[ns]
>>> s.dt.is_month_start
0    False
1    False
2    True
dtype: bool
>>> s.dt.is_month_end
0    False
1    True
2    False
dtype: bool 
>>> idx = pd.date_range("2018-02-27", periods=3)
>>> idx.is_month_start
array([False, False, True])
>>> idx.is_month_end
array([False, True, False]) 

pandas.DatetimeIndex.is_quarter_start

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.is_quarter_start.html

property DatetimeIndex.is_quarter_start

指示日期是否为季度的第一天的指示器。

返回:

is_quarter_start系列或 DatetimeIndex

与原始数据相同类型的具有布尔值的数据。系列将具有相同的名称和索引。DatetimeIndex 将具有相同的名称。

另请参阅

quarter

返回日期的季度。

is_quarter_end

指示季度结束的类似属性。

示例

此方法在具有日期时间值的系列上通过.dt访问器,并直接在 DatetimeIndex 上可用。

>>> df = pd.DataFrame({'dates': pd.date_range("2017-03-30",
...                   periods=4)})
>>> df.assign(quarter=df.dates.dt.quarter,
...           is_quarter_start=df.dates.dt.is_quarter_start)
 dates  quarter  is_quarter_start
0 2017-03-30        1             False
1 2017-03-31        1             False
2 2017-04-01        2              True
3 2017-04-02        2             False 
>>> idx = pd.date_range('2017-03-30', periods=4)
>>> idx
DatetimeIndex(['2017-03-30', '2017-03-31', '2017-04-01', '2017-04-02'],
 dtype='datetime64[ns]', freq='D') 
>>> idx.is_quarter_start
array([False, False,  True, False]) 

pandas.DatetimeIndex.is_quarter_end

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.is_quarter_end.html

property DatetimeIndex.is_quarter_end

指示日期是否为季度的最后一天的指标。

返回:

is_quarter_endSeries 或 DatetimeIndex

与具有布尔值的原始数据相同类型。 Series 将具有相同的名称和索引。 DatetimeIndex 将具有相同的名称。

另请参阅

quarter

返回日期的季度。

is_quarter_start

表示季度开始的相似属性。

示例

此方法可在具有日期时间值的 Series 上通过 .dt 访问器使用,并直接在 DatetimeIndex 上使用。

>>> df = pd.DataFrame({'dates': pd.date_range("2017-03-30",
...                    periods=4)})
>>> df.assign(quarter=df.dates.dt.quarter,
...           is_quarter_end=df.dates.dt.is_quarter_end)
 dates  quarter    is_quarter_end
0 2017-03-30        1             False
1 2017-03-31        1              True
2 2017-04-01        2             False
3 2017-04-02        2             False 
>>> idx = pd.date_range('2017-03-30', periods=4)
>>> idx
DatetimeIndex(['2017-03-30', '2017-03-31', '2017-04-01', '2017-04-02'],
 dtype='datetime64[ns]', freq='D') 
>>> idx.is_quarter_end
array([False,  True, False, False]) 

pandas.DatetimeIndex.is_year_start

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.is_year_start.html

property DatetimeIndex.is_year_start

判断日期是否为一年的第一天。

返回:

Series 或 DatetimeIndex

与原始数据相同类型,具有布尔值。Series 将具有相同的名称和索引。DatetimeIndex 将具有相同的名称。

另请参阅

is_year_end

类似的属性指示一年的最后一天。

示例

此方法适用于具有日期时间值的 Series 在 .dt 访问器下,以及直接在 DatetimeIndex 上。

>>> dates = pd.Series(pd.date_range("2017-12-30", periods=3))
>>> dates
0   2017-12-30
1   2017-12-31
2   2018-01-01
dtype: datetime64[ns] 
>>> dates.dt.is_year_start
0    False
1    False
2    True
dtype: bool 
>>> idx = pd.date_range("2017-12-30", periods=3)
>>> idx
DatetimeIndex(['2017-12-30', '2017-12-31', '2018-01-01'],
 dtype='datetime64[ns]', freq='D') 
>>> idx.is_year_start
array([False, False,  True]) 

pandas.DatetimeIndex.is_year_end

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.is_year_end.html

property DatetimeIndex.is_year_end

指示日期是否为一年中的最后一天。

返回:

系列或 DatetimeIndex

返回与原始数据相同类型的布尔值。系列将具有相同的名称和索引。DatetimeIndex 将具有相同的名称。

另请参阅

is_year_start

类似的属性指示年的开始。

示例

此方法在具有日期时间值的系列下使用.dt访问器,并直接在 DatetimeIndex 上使用。

>>> dates = pd.Series(pd.date_range("2017-12-30", periods=3))
>>> dates
0   2017-12-30
1   2017-12-31
2   2018-01-01
dtype: datetime64[ns] 
>>> dates.dt.is_year_end
0    False
1     True
2    False
dtype: bool 
>>> idx = pd.date_range("2017-12-30", periods=3)
>>> idx
DatetimeIndex(['2017-12-30', '2017-12-31', '2018-01-01'],
 dtype='datetime64[ns]', freq='D') 
>>> idx.is_year_end
array([False,  True, False]) 

pandas.DatetimeIndex.is_leap_year

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.is_leap_year.html

property DatetimeIndex.is_leap_year

布尔指示符,用于判断日期是否属于闰年。

闰年是指一年有 366 天(而不是 365 天),包括 2 月 29 日作为闰日。 闰年是 4 的倍数的年份,但除以 100 但不能被 400 整除的年份除外。

返回:

Series 或 ndarray

布尔值,指示日期是否属于闰年。

示例

该方法可在带有日期时间值的序列中通过.dt访问器使用,也可以直接在 DatetimeIndex 上使用。

>>> idx = pd.date_range("2012-01-01", "2015-01-01", freq="YE")
>>> idx
DatetimeIndex(['2012-12-31', '2013-12-31', '2014-12-31'],
 dtype='datetime64[ns]', freq='YE-DEC')
>>> idx.is_leap_year
array([ True, False, False]) 
>>> dates_series = pd.Series(idx)
>>> dates_series
0   2012-12-31
1   2013-12-31
2   2014-12-31
dtype: datetime64[ns]
>>> dates_series.dt.is_leap_year
0     True
1    False
2    False
dtype: bool 

pandas.DatetimeIndex.inferred_freq

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.inferred_freq.html

DatetimeIndex.inferred_freq

尝试返回一个由 infer_freq 生成的表示频率的字符串。

如果无法自动检测到频率,则返回 None。

示例

对于 DatetimeIndex:

>>> idx = pd.DatetimeIndex(["2018-01-01", "2018-01-03", "2018-01-05"])
>>> idx.inferred_freq
'2D' 

对于 TimedeltaIndex:

>>> tdelta_idx = pd.to_timedelta(["0 days", "10 days", "20 days"])
>>> tdelta_idx
TimedeltaIndex(['0 days', '10 days', '20 days'],
 dtype='timedelta64[ns]', freq=None)
>>> tdelta_idx.inferred_freq
'10D' 

pandas.DatetimeIndex.indexer_at_time

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.indexer_at_time.html

DatetimeIndex.indexer_at_time(time, asof=False)

返回特定时间的值的索引位置。

参数:

timedatetime.time 或 str

时间以对象(datetime.time)或适当格式的字符串传入(“%H:%M”, “%H%M”, “%I:%M%p”, “%I%M%p”, “%H:%M:%S”, “%H%M%S”, “%I:%M:%S%p”, “%I%M%S%p”)。

返回:

np.ndarray[np.intp]

另请参阅

indexer_between_time

获取特定时间段内值的索引位置。

DataFrame.at_time

选择特定时间的值。

示例

>>> idx = pd.DatetimeIndex(["1/1/2020 10:00", "2/1/2020 11:00",
...                         "3/1/2020 10:00"])
>>> idx.indexer_at_time("10:00")
array([0, 2]) 

pandas.DatetimeIndex.indexer_between_time

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.indexer_between_time.html

DatetimeIndex.indexer_between_time(start_time, end_time, include_start=True, include_end=True)

返回特定时间段内数值的索引位置。

参数:

start_time, end_timedatetime.time, str

时间以对象(datetime.time)或适当格式的字符串传递(“%H:%M”,“%H%M”,“%I:%M%p”,“%I%M%p”,“%H:%M:%S”,“%H%M%S”,“%I:%M:%S%p”,“%I%M%S%p”)。

include_startbool, default True

include_endbool, default True

返回:

np.ndarray[np.intp]

参见

indexer_at_time

获取特定时间段数值的索引位置。

DataFrame.between_time

选择特定时间段内的数值。

示例

>>> idx = pd.date_range("2023-01-01", periods=4, freq="h")
>>> idx
DatetimeIndex(['2023-01-01 00:00:00', '2023-01-01 01:00:00',
 '2023-01-01 02:00:00', '2023-01-01 03:00:00'],
 dtype='datetime64[ns]', freq='h')
>>> idx.indexer_between_time("00:00", "2:00", include_end=False)
array([0, 1]) 

pandas.DatetimeIndex.normalize

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.normalize.html

DatetimeIndex.normalize(*args, **kwargs)

将时间转换为午夜。

时间日期的时间组件被转换为午夜即00:00:00。这在时间不重要的情况下很有用。长度不变。时区不受影响。

此方法适用于具有.dt访问器下的日期时间值的 Series,以及直接适用于 Datetime Array/Index。

返回:

DatetimeArray、DatetimeIndex 或 Series

与原始数据相同的类型。Series 将具有相同的名称和索引。DatetimeIndex 将具有相同的名称。

另请参阅

floor

将日期时间向下取整到指定的频率。

ceil

将日期时间向上取整到指定的频率。

round

将日期时间向上取整到指定的频率。

示例

>>> idx = pd.date_range(start='2014-08-01 10:00', freq='h',
...                     periods=3, tz='Asia/Calcutta')
>>> idx
DatetimeIndex(['2014-08-01 10:00:00+05:30',
 '2014-08-01 11:00:00+05:30',
 '2014-08-01 12:00:00+05:30'],
 dtype='datetime64[ns, Asia/Calcutta]', freq='h')
>>> idx.normalize()
DatetimeIndex(['2014-08-01 00:00:00+05:30',
 '2014-08-01 00:00:00+05:30',
 '2014-08-01 00:00:00+05:30'],
 dtype='datetime64[ns, Asia/Calcutta]', freq=None) 

pandas.DatetimeIndex.strftime

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.strftime.html

DatetimeIndex.strftime(date_format)

使用指定的日期格式转换为索引。

返回按照指定的日期格式格式化的索引字符串,支持与 Python 标准库相同的字符串格式。字符串格式的详细信息可以在python string format doc中找到。

C strftime API 支持的格式,但不在 python string format doc 中支持的格式(如“%R”、“%r”)不受官方支持,最好用其支持的等价格式替换(如“%H:%M”、“%I:%M:%S %p”)。

请注意,PeriodIndex 支持附加指令,详细信息请参见 Period.strftime。

参数:

date_formatstr

日期格式字符串(例如“%Y-%m-%d”)。

返回:

ndarray[object]

NumPy ndarray 的格式化字符串。

另请参见

to_datetime

将给定参数转换为日期时间。

DatetimeIndex.normalize

返回具有午夜时间的 DatetimeIndex。

DatetimeIndex.round

将 DatetimeIndex 四舍五入到指定的频率。

DatetimeIndex.floor

将 DatetimeIndex 向下取整到指定的频率。

Timestamp.strftime

格式化单个时间戳。

Period.strftime

格式化单个周期。

示例

>>> rng = pd.date_range(pd.Timestamp("2018-03-10 09:00"),
...                     periods=3, freq='s')
>>> rng.strftime('%B %d, %Y, %r')
Index(['March 10, 2018, 09:00:00 AM', 'March 10, 2018, 09:00:01 AM',
 'March 10, 2018, 09:00:02 AM'],
 dtype='object') 

pandas.DatetimeIndex.snap

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.snap.html

DatetimeIndex.snap(freq='S')

将时间戳捕捉到最近的发生频率。

返回:

DatetimeIndex

例子

>>> idx = pd.DatetimeIndex(['2023-01-01', '2023-01-02',
...                        '2023-02-01', '2023-02-02'])
>>> idx
DatetimeIndex(['2023-01-01', '2023-01-02', '2023-02-01', '2023-02-02'],
dtype='datetime64[ns]', freq=None)
>>> idx.snap('MS')
DatetimeIndex(['2023-01-01', '2023-01-01', '2023-02-01', '2023-02-01'],
dtype='datetime64[ns]', freq=None) 

pandas.DatetimeIndex.tz_convert

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.tz_convert.html

DatetimeIndex.tz_convert(tz)

将 tz-aware 的 Datetime 数组/索引从一个时区转换为另一个时区。

参数:

tzstr,pytz.timezone,dateutil.tz.tzfile,datetime.tzinfo 或 None

时间的时区。相应的时间戳将被转换为 Datetime 数组/索引的这个时区。tz 为 None 将转换为 UTC 并移除时区信息。

返回:

数组或索引

引发:

类型错误

如果 Datetime 数组/索引是 tz-naive。

另请参阅

DatetimeIndex.tz

一个与 UTC 具有可变偏移量的时区。

DatetimeIndex.tz_localize

将 tz-naive 的 DatetimeIndex 本地化到给定时区,或从 tz-aware 的 DatetimeIndex 中移除时区。

示例

使用 tz 参数,我们可以将 DatetimeIndex 更改为其他时区:

>>> dti = pd.date_range(start='2014-08-01 09:00',
...                     freq='h', periods=3, tz='Europe/Berlin') 
>>> dti
DatetimeIndex(['2014-08-01 09:00:00+02:00',
 '2014-08-01 10:00:00+02:00',
 '2014-08-01 11:00:00+02:00'],
 dtype='datetime64[ns, Europe/Berlin]', freq='h') 
>>> dti.tz_convert('US/Central')
DatetimeIndex(['2014-08-01 02:00:00-05:00',
 '2014-08-01 03:00:00-05:00',
 '2014-08-01 04:00:00-05:00'],
 dtype='datetime64[ns, US/Central]', freq='h') 

使用tz=None,我们可以移除时区(在必要时转换为 UTC):

>>> dti = pd.date_range(start='2014-08-01 09:00', freq='h',
...                     periods=3, tz='Europe/Berlin') 
>>> dti
DatetimeIndex(['2014-08-01 09:00:00+02:00',
 '2014-08-01 10:00:00+02:00',
 '2014-08-01 11:00:00+02:00'],
 dtype='datetime64[ns, Europe/Berlin]', freq='h') 
>>> dti.tz_convert(None)
DatetimeIndex(['2014-08-01 07:00:00',
 '2014-08-01 08:00:00',
 '2014-08-01 09:00:00'],
 dtype='datetime64[ns]', freq='h') 

pandas.DatetimeIndex.tz_localize

原文:pandas.pydata.org/docs/reference/api/pandas.DatetimeIndex.tz_localize.html

DatetimeIndex.tz_localize(tz, ambiguous='raise', nonexistent='raise')

将 tz-naive 的 Datetime Array/Index 本地化为 tz-aware 的 Datetime Array/Index。

此方法接受一个时区(tz)naive 的 Datetime Array/Index 对象,并使其具有时区意识。它不会将时间移动到另一个时区。

该方法也可用于执行相反操作 - 从 aware 对象创建一个无时区的对象。为此,传递 tz=None。

参数:

tzstr,pytz.timezone,dateutil.tz.tzfile,datetime.tzinfo 或 None

要将时间戳转换为的时区。传递None将删除时区信息,保留本地时间。

模糊‘infer’,‘NaT’,布尔数组,默认‘raise’

由于 DST 而向后移动时钟时,可能会出现模糊时间。例如,在中欧时间(UTC+01)中,从 03:00 DST 到 02:00 非 DST 时,当本地时间 02:30:00 同时出现在 00:30:00 UTC 和 01:30:00 UTC。在这种情况下,模糊参数决定如何处理模糊时间。

  • ‘infer’将尝试根据顺序推断秋季 dst 转换小时

  • 布尔 ndarray,其中 True 表示 DST 时间,False 表示非 DST 时间(请注意,此标志仅适用于模糊时间)

  • ‘NaT’将在存在模糊时间时返回 NaT

  • 如果存在模糊时间,‘raise’将引发 AmbiguousTimeError。

不存在的‘shift_forward’,‘shift_backward’,‘NaT’,时间差,默认‘raise’

不存在的时间在由于 DST 而向前移动时钟的特定时区中不存在。

  • ‘shift_forward’将不存在的时间向前移动到最接近的现有时间

  • ‘shift_backward’将不存在的时间向后移动到最接近的现有时间

  • ‘NaT’将在不存在时间时返回 NaT

  • 时间差对象将通过时间差移动不存在的时间

  • 如果存在不存在时间,‘raise’将引发 NonExistentTimeError。

返回:

与 self 相同类型

转换为指定时区的 Array/Index。

引发:

类型错误

如果 Datetime Array/Index 是 tz-aware 且 tz 不为 None。

另请参阅

DatetimeIndex.tz_convert

将 tz-aware 的 DatetimeIndex 从一个时区转换为另一个时区。

示例

>>> tz_naive = pd.date_range('2018-03-01 09:00', periods=3)
>>> tz_naive
DatetimeIndex(['2018-03-01 09:00:00', '2018-03-02 09:00:00',
 '2018-03-03 09:00:00'],
 dtype='datetime64[ns]', freq='D') 

将 DatetimeIndex 本地化为美国/东部时区:

>>> tz_aware = tz_naive.tz_localize(tz='US/Eastern')
>>> tz_aware
DatetimeIndex(['2018-03-01 09:00:00-05:00',
 '2018-03-02 09:00:00-05:00',
 '2018-03-03 09:00:00-05:00'],
 dtype='datetime64[ns, US/Eastern]', freq=None) 

使用tz=None,我们可以删除时区信息,同时保留本地时间(未转换为 UTC):

>>> tz_aware.tz_localize(None)
DatetimeIndex(['2018-03-01 09:00:00', '2018-03-02 09:00:00',
 '2018-03-03 09:00:00'],
 dtype='datetime64[ns]', freq=None) 

在处理 DST 更改时要小心。当存在连续数据时,pandas 可以推断 DST 时间:

>>> s = pd.to_datetime(pd.Series(['2018-10-28 01:30:00',
...                               '2018-10-28 02:00:00',
...                               '2018-10-28 02:30:00',
...                               '2018-10-28 02:00:00',
...                               '2018-10-28 02:30:00',
...                               '2018-10-28 03:00:00',
...                               '2018-10-28 03:30:00']))
>>> s.dt.tz_localize('CET', ambiguous='infer')
0   2018-10-28 01:30:00+02:00
1   2018-10-28 02:00:00+02:00
2   2018-10-28 02:30:00+02:00
3   2018-10-28 02:00:00+01:00
4   2018-10-28 02:30:00+01:00
5   2018-10-28 03:00:00+01:00
6   2018-10-28 03:30:00+01:00
dtype: datetime64[ns, CET] 

在某些情况下,推断 DST 是不可能的。在这种情况下,您可以将一个 ndarray 传递给模糊参数,以明确设置 DST

>>> s = pd.to_datetime(pd.Series(['2018-10-28 01:20:00',
...                               '2018-10-28 02:36:00',
...                               '2018-10-28 03:46:00']))
>>> s.dt.tz_localize('CET', ambiguous=np.array([True, True, False]))
0   2018-10-28 01:20:00+02:00
1   2018-10-28 02:36:00+02:00
2   2018-10-28 03:46:00+01:00
dtype: datetime64[ns, CET] 

如果 DST 转换导致不存在时间,您可以使用时间差对象或‘shift_forward’或‘shift_backwards’将这些日期向前或向后移动。

>>> s = pd.to_datetime(pd.Series(['2015-03-29 02:30:00',
...                               '2015-03-29 03:30:00']))
>>> s.dt.tz_localize('Europe/Warsaw', nonexistent='shift_forward')
0   2015-03-29 03:00:00+02:00
1   2015-03-29 03:30:00+02:00
dtype: datetime64[ns, Europe/Warsaw] 
>>> s.dt.tz_localize('Europe/Warsaw', nonexistent='shift_backward')
0   2015-03-29 01:59:59.999999999+01:00
1   2015-03-29 03:30:00+02:00
dtype: datetime64[ns, Europe/Warsaw] 
>>> s.dt.tz_localize('Europe/Warsaw', nonexistent=pd.Timedelta('1h'))
0   2015-03-29 03:30:00+02:00
1   2015-03-29 03:30:00+02:00
dtype: datetime64[ns, Europe/Warsaw] 
posted @ 2024-06-24 16:14  绝不原创的飞龙  阅读(2)  评论(0编辑  收藏  举报