2017-02-28 39 views
0

對於Pandas中的DataFrame,如何選擇前5個值和後5個值? 例如python pandas選擇頭部和尾部

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個人價值?請非常感謝所需的輸出 – EdChum

回答

4

您可以使用ilocnumpy.r_

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相關聯。

定義如下

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

那麼你可以只輸入df.less()

這是同類型df.head().append(df.tail())

如果鍵入df.less(2),結果是一樣的df.head(1).append(df.tail(1))

+0

做一些格式化 – Billa