2017-03-23 34 views
1

實例數據幀熊貓下降每列編號第n行

df = pd.DataFrame(np.random.randint(2200, 3300, 50), index=[np.random.randint(0,6, 50)] ,columns=list('A')) 

下面的數據是什麼樣子

A 
5 2393 
4 2421 
0 3038 
5 2914 
4 2559 
4 2314 
5 3006 
3 2553 
0 2642 
3 2441 
3 2512 
0 2412 

一個示例中,我想這樣做是下降的前n什麼(讓我們用這個例子2)索引記錄。因此,從以前的數據示例,它會變成...

A 
4 2314 
5 3006 
3 2512 
0 2412 

任何指導在這裏將不勝感激。我一直無法獲得任何工作。

回答

3

使用tail-2

s.groupby(level=0, group_keys=False).apply(pd.DataFrame.tail, n=-2) 

     A 
0 2412 
3 2512 
4 2314 
5 3006 

要真正敲定下來

s.groupby(level=0, group_keys=False, sort=False).apply(pd.DataFrame.tail, n=-2) 

     A 
5 3006 
4 2314 
0 2412 
3 2512 
+1

*很多*比我想要做的更好! – bernie

+0

工作得很好,謝謝。我調整了一點,放下3條記錄,並使用列而不是索引。 df = df.groupby('SN',group_keys = False).apply(pd.DataFrame.tail,n = -3) –

0

如果我理解你的問題,你想擁有第一n行的數據幀取出的數據幀新。如果這就是你想要的,我會重置索引,然後根據熊貓的默認索引放下,然後放回原始索引。以下是你如何做到這一點。

df = pd.DataFrame(data=np.random.randint(2200, 3300, 50), 
        index=np.random.randint(0,6, 50), 
        columns=list('A')) 
n = 5 
print(df.head(n * 2)) 
df_new = df.reset_index().drop(range(n)).set_index('index') 
print(df_new.head(n))