1
我怎样才能从一个数据帧的头部和尾部从pandas.Dataframe获得k
(比方说100
)条目? 我会建议2个单独的步骤和合并操作,但这似乎很单调。有没有更好的办法? 我试图使用df.iloc[:100,:-100]
,但那只会返回前100个记录。熊猫从头部和尾部拿k个条目
我怎样才能从一个数据帧的头部和尾部从pandas.Dataframe获得k
(比方说100
)条目? 我会建议2个单独的步骤和合并操作,但这似乎很单调。有没有更好的办法? 我试图使用df.iloc[:100,:-100]
,但那只会返回前100个记录。熊猫从头部和尾部拿k个条目
您可以使用iloc
与numpy.r_
为concanecate指数:
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)]
d etails
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
我得到的 - 不支持的操作数类型(S)为+: '范围' 和 '范围' – Dark
它只能在'蟒蛇2',为Python 3需要范围转换成'list'像'DF。 iloc [list(range(0,N))+ list(range(-N,0))]' – jezrael