我创建了一个数据帧?
import pandas as pd
data = pd.DataFrame({'a':range(1,11),'b':['m','f','m','m','m','f','m','f','f','f'],'c':np.random.randn(10)})
Run Code Online (Sandbox Code Playgroud)
哪个看起来像?
a b c
0 1 m 0.495439
1 2 f 1.444694
2 3 m 0.150637
3 4 m -1.078252
4 5 m 0.618045
5 6 f -0.525368
6 7 m 0.188912
7 8 f 0.159014
8 9 f 0.536495
9 10 f 0.874598
Run Code Online (Sandbox Code Playgroud)
当我想选择一些行时,我运行
data[:2] or data.ix[2]
Run Code Online (Sandbox Code Playgroud)
但是当我尝试:
se = range(2)
data[se]
Run Code Online (Sandbox Code Playgroud)
有一个错误:
KeyError: 'No column(s) named: [0 1]'
Run Code Online (Sandbox Code Playgroud)
我知道 DataFrame 选择一个 col 作为默认值。运行时发生了什么data[se]?冒号(:) 在python 中是如何工作的?
我从未使用过 Pandas,但对切片有一个很好的解释([::]python 中的符号可以在这里找到。现在从我在手册中读到的内容)
使用 DataFrame,在 [] 内部切片会切片行。这主要是为了方便,因为它是一种常见的操作。
Run Code Online (Sandbox Code Playgroud)In [32]: df[:3] Out[32]: A B C D 2000-01-01 -0.282863 0.469112 -1.509059 -1.135632 2000-01-02 -0.173215 1.212112 0.119209 -1.044236 2000-01-03 -2.104569 -0.861849 -0.494929 1.071804 In [33]: df[::-1] Out[33]: A B C D 2000-01-08 -1.157892 -0.370647 -1.344312 0.844885 2000-01-07 0.577046 0.404705 -1.715002 -1.039268 2000-01-06 0.113648 -0.673690 -1.478427 0.524988 2000-01-05 0.567020 -0.424972 0.276232 -1.087401 2000-01-04 -0.706771 0.721555 -1.039575 0.271860 2000-01-03 -2.104569 -0.861849 -0.494929 1.071804 2000-01-02 -0.173215 1.212112 0.119209 -1.044236 2000-01-01 -0.282863 0.469112 -1.509059 -1.135632
在您使用的示例中,range(2)它为您[0, 1]提供了列表。我认为您需要的是data[0:1]切片DataFrame并获取第 0 行和第 1 行,这与data[:1]省略零相同。例如,如果您想要第 3,4 和 5 行,那就是data[3:5].
此外,查看手册中的一些示例,您可以使用step,因此:
data[::2] 给你每第二行data[::-1] 以相反的顺序返回所有行data[0:10:2]将导致第 0、2、4、6、8 和 10 行希望能帮助到你