df [:]和df [::]之间的主要区别是什么? python3

时间:2018-10-31 08:23:31

标签: python python-3.x python-2.7 jupyter-notebook

df [:]和df [::]之间的主要区别是什么?您能不能给我一个有关此的示例示例。我无法理解。

2 个答案:

答案 0 :(得分:0)

假设您是在谈论python lists而不是pandas数据帧:

考虑列表l

In [301]: l = range(20,30)

In [302]: l
Out[302]: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

因此,如果您执行以下操作:

In [303]: l[3:6]
Out[303]: [23, 24, 25]

这意味着您要从l中将元素列表从index = 3提取到index = 6(不包括6)。因此,它返回了23,它是l [3],24,它是l [4]和25,它是l [5]。

注意:未返回26(l [6]),因为6中未包含l[3:6]

因此,l [:]-将返回所有元素,因为未指定范围。

In [305]: l[:]
Out[305]: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

用于扩展切片:

l [1:6:2] -意味着,您希望元素从 index = 1到index = 6,步长为2 。 Step = 2表示,每个索引增加2

So, you should get below elements:
 l[1], 
 l[1 + 2](because the step we defined is 2), 
 l[1 + 2 + 2]( keep adding `2` to the previous index )

现在,此处的上一个索引为5,而我们给出的限制为6,其中不包括6。因此,如上所述,我们仅获得3个元素。检查以下内容:

In [307]: l[1:6:2]
Out[307]: [21, 23, 25]

因此, l [::] 也将返回整个列表,因为我们尚未在此处指定任何范围。

In [309]: l[::]
Out[309]: [20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

您需要在python中练习对字符串进行切片,以了解更多信息。

让我知道这是否有帮助。

答案 1 :(得分:0)

没有区别。

sequence[start:end:step]
sequence[start:end]

':'和'::'代表序列片段。如果省略了开始,结束和/或步骤,则使用默认值:开始的默认值为0,结束的默认值为len(sequence),步骤的默认值为1。

因此,如果df = [1,2,3,4,5,6,7,8]那么

[df[::]==df[:], df[:] == df[0: len(df): 1], df[::] == df[0: len(df): 1]]

Outputs: [True, True, True]