Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫从头部和尾部取k个条目_Python_Pandas - Fatal编程技术网

Python 熊猫从头部和尾部取k个条目

Python 熊猫从头部和尾部取k个条目,python,pandas,Python,Pandas,如何从pandas.Dataframe的头部和尾部获取k(比如100)条目? 我建议两个单独的步骤和一个合并操作,但这似乎很乏味。有更好的办法吗? 我尝试使用df.iloc[:100,:-100],但这只会返回前100条记录。您可以使用for concanate索引: N = 3 df = df.iloc[np.r_[0:N, -N:0]] 样本: np.random.seed(45) df = pd.DataFrame(np.random.randint(10, size=(10,5)))

如何从pandas.Dataframe的头部和尾部获取
k
(比如
100
)条目? 我建议两个单独的步骤和一个合并操作,但这似乎很乏味。有更好的办法吗? 我尝试使用
df.iloc[:100,:-100]
,但这只会返回前100条记录。

您可以使用for concanate索引:

N = 3
df = df.iloc[np.r_[0:N, -N:0]]
样本

np.random.seed(45)
df = pd.DataFrame(np.random.randint(10, size=(10,5)))
print (df)
   0  1  2  3  4
0  3  0  5  3  4
1  9  8  1  5  9
2  6  8  7  8  5
3  2  8  1  6  4
4  8  4  6  4  9
5  1  6  8  8  1
6  6  0  4  9  8
7  0  9  2  6  7
8  0  0  2  9  2
9  6  0  9  6  0

N = 3
df = df.iloc[np.r_[0:N, -N:0]]
print (df)
   0  1  2  3  4
0  3  0  5  3  4
1  9  8  1  5  9
2  6  8  7  8  5
7  0  9  2  6  7
8  0  0  2  9  2
9  6  0  9  6  0

您可以将
iloc
range

N = 3
df.iloc[range(0, N) + range(-N, 0)]
细节

In [200]: df = pd.DataFrame(np.random.randn(10, 2))

In [201]: df
Out[201]:
          0         1
0 -1.034025  0.222752
1  0.102861 -0.827097
2  1.218721  0.397002
3  0.378780  1.903993
4  0.931718 -1.086045
5  1.608149 -0.233175
6 -1.399926 -2.218517
7 -0.411787  0.309623
8 -0.493428 -1.834097
9 -0.797647 -0.085315

In [202]: N = 3

In [203]: df.iloc[range(0, N) + range(-N, 0)]
Out[203]:
          0         1
0 -1.034025  0.222752
1  0.102861 -0.827097
2  1.218721  0.397002
7 -0.411787  0.309623
8 -0.493428 -1.834097
9 -0.797647 -0.085315

对于+:“range”和“range”它只在
python2
中工作,对于python3,需要将range转换为
list
类似
df.iloc[list(range(0,N))+list(range(-N,0))]