2014-10-06 102 views
0

我有一個數據框,其中包含一些包含數字數據的列和其他包含文本的列。這基本上是這樣的:熊貓 - 根據選定列中的排名值創建新的數據框

Age Weight Blood Sugar Study Group Gender Notes 
29  195  126   B    Female notes of some kind 
34  180  140   B    Male  different set of notes 
48  220  111   C    Male  blah blah 
55  189  109   C    Male  some more notes 

我想根據數值數據列的排名創建數據框的子劃分。例如,如果我需要2名最古老的病人我的新的數據幀將看起來像這樣:

Age Weight Blood Sugar Study Group Gender Notes 
48  220  111   C    Male  blah blah 
55  189  109   C    Male  some more notes 

rank功能看起來可能是有用的。我想我可以運行:

df2 = rank.df(axis=0) 

,然後找到某種方式來使用的指數DF2DF拉行到新dataframes。沿線的東西:

cutoff = df2[df2 > 10] 
# DELETE ROWS WITH NaN VALUES IN THE COLUMNS OF INTEREST 

雖然這感覺有點笨拙。我希望有一個更直接的說法,

「大熊貓,我想要一個新的數據框,其中有15個最老的人在這一個好!現在我想要一個新的數據框與20個最年輕的人,等等「

回答

1

一種選擇是作爲排序依據年齡數據框:

df = df.sort('Age') 

然後通過df['Age'].values[n]年齡的第n個最年輕的人,並通過df['Age'].values[-n]時代的第n個最老的人。

因此,要查看與誰是15個年紀最老的人一個數據框,你可以這樣做:

df[df['Age'] >= df['Age'].values[-15]] 

另外,如果你只是想通過行數來限制返回(如別介意,可能有20人共享的,比方說,55年代最久),你可以只使用在分類數據框的headtail方法...

df_age = df.sort('Age', ascending=False) 

...然後df_age.head(15)會認爲15的人,df_age.tail(20)會查看20個最小的人。

相關問題