大熊貓數據框中選擇行我有一個熊貓數據幀,它看起來像:與最高得分
Name Candidates Qualifier Score
AAA AAA_1 Yes 0
AAA AAA_2 Yes 10
AAA AAA_3 No 20
BBB BBB_1 No 1
BBB BBB-2 Yes 10
BBB BBB_3 Yes 50
我想在每一個「名稱」爲最高分,選擇的前兩名候選人。我怎樣才能做到這一點?
大熊貓數據框中選擇行我有一個熊貓數據幀,它看起來像:與最高得分
Name Candidates Qualifier Score
AAA AAA_1 Yes 0
AAA AAA_2 Yes 10
AAA AAA_3 No 20
BBB BBB_1 No 1
BBB BBB-2 Yes 10
BBB BBB_3 Yes 50
我想在每一個「名稱」爲最高分,選擇的前兩名候選人。我怎樣才能做到這一點?
您可以排序的「名稱」和「分數」的東風,然後在「名稱」 groupby
,並呼籲head(2)
拿到第2排的每個組:
In [228]:
df.sort(['Name','Score'], ascending=False).groupby('Name').head(2)
Out[228]:
Name Candidates Qualifier Score
5 BBB BBB_3 Yes 50
4 BBB BBB-2 Yes 10
2 AAA AAA_3 No 20
1 AAA AAA_2 Yes 10
呃,看到我最終用與EdChum的answer相同的方法,這是我的貢獻,這是我的評論有點長。如果你想打印名字和候選人,你可以像這樣使用一個sort
聲明。
Sorted = df.sort(['Score'], ascending = False).groupby('Name').head(2)
print Sorted.sort(['Candidate'], ascending = True)
Name Cand Score
1 AAA AAA_2 10
2 AAA AAA_3 20
4 BBB BBB_2 10
5 BBB BBB_3 50
這不似乎解決了問題的「按名稱」部分。 – DSM
@DSM是的,我發現後發現。我現在正在正確回答 – SirParselot
@DSM抱歉,這是錯誤的嗎? – EdChum
OP在「每個名稱中的前兩名候選人」之後。 – DSM
如果我沒有錯,問題就是每個名稱得分最高的前兩名'候選人'。 –