Python 熊猫从头部和尾部取k个条目
如何从pandas.Dataframe的头部和尾部获取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)))
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))]