首页 > 解决方案 > df[:] 和 df[::] 之间的主要区别是什么?蟒蛇3

问题描述

df[:] 和 df[::] 之间的主要区别是什么,你能否给我一个关于这个的示例。我无法理解。

标签: pythonpython-3.xpython-2.7jupyter-notebook

解决方案


假设您正在谈论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],24l[4] 和25l[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 中对字符串进行切片才能掌握它。

让我知道这是否有帮助。


推荐阅读