2017-02-28 1 views
0

팬더의 DataFrame의 경우 처음 5 개 값과 마지막 5 개 값을 모두 선택하는 방법은 무엇입니까? 첫 번째 견인 행과 마지막 견인 행을 표시하는 방법 python 팬더가 머리와 꼬리 모두 선택

In [11]: df 
Out[11]: 
     A B C 
2012-11-29 0 0 0 
2012-11-30 1 1 1 
2012-12-01 2 2 2 
2012-12-02 3 3 3 
2012-12-03 4 4 4 
2012-12-04 5 5 5 
2012-12-05 6 6 6 
2012-12-06 7 7 7 
2012-12-07 8 8 8 
2012-12-08 9 9 9 

예를

를 들어 ?

+0

귀하의 질문에 '아무튼과 동일 이해가된다면, 처음 5 개 값과 마지막 5 개 값을 선택하기를 원합니다. 행 o r 개별 값? 원하는 출력을 보여주십시오. – EdChum

답변

4

당신은 numpy.r_iloc를 사용할 수 있습니다

print (np.r_[0:2, -2:0]) 
[ 0 1 -2 -1] 

df = df.iloc[np.r_[0:2, -2:0]] 
print (df) 
      A B C 
2012-11-29 0 0 0 
2012-11-30 1 1 1 
2012-12-07 8 8 8 
2012-12-08 9 9 9 

df = df.iloc[np.r_[0:4, -4:0]] 
print (df) 
      A B C 
2012-11-29 0 0 0 
2012-11-30 1 1 1 
2012-12-01 2 2 2 
2012-12-02 3 3 3 
2012-12-05 6 6 6 
2012-12-06 7 7 7 
2012-12-07 8 8 8 
2012-12-08 9 9 9 
+0

대단히 감사합니다. –

4

당신은 처음 다섯과 마지막 다섯을 얻을 수 df.head(5)df.tail(5)를 사용할 수 있습니다. 선택적으로 당신은 새로운 데이터 프레임과 append() 머리와 꼬리를 만들 수 있습니다

new_df = df.tail(5) 
new_df = new_df.append(df.head(5)) 
1
당신이 할 수있는

df.head를 사용하는을 (2) df.tail (2)

0

작은 간단한 함수 :

def ends(df, x=5): 
    return df.head(x).append(df.tail(x)) 

및 사용과 같이 :

df = pd.DataFrame(np.random.rand(15,6)) 
ends(df,2) 

실제로 너무 많은이를 사용하여, 나는 그것을 생각 팬더에 추가 할 수있는 좋은 기능이 될 것입니다.

0

Linas Fx와 연결됩니다. 당신이 df.less(2) 입력하면

당신이 입력 할 수 있습니다 다음

pd.DataFrame.less = lambda df, n=10: df.head(n//2).append(df.tail(n//2)) 

아래 정의에만 df.less()

그것은 형식과 동일합니다 df.head().append(df.tail())

, 결과는 df.head(1).append(df.tail(1))

+0

일부 서식 지정 – Billa