2017-11-03 7 views
0

データフレームには列と行が多数あり、別の列の一意の値に基づいてデータを取得したいとします。異なる列の一意の値からの索引付け

flag name 
0 1  bob 
1 2  larry 
2 1  alice 
3 1  mary 
4 3  peter 
5 4  rick 

使用

df['flag'].unique() 

が、私はそれらの一意の値に対応して名前を取得するにはどうすればよい1 2 3 4

が得れば?

すなわち

flag name 
0 1  bob 
1 2  larry 
4 3  peter 
5 4  rick 

私はボブ、アリス、またはメアリーを取得するかどうかは関係ありません。私はちょうどそのフラグ値の名前が必要です。使用することにより

答えて

2

drop_duplicates

df.drop_duplicates(['flag']) 
Out[1036]: 
    flag name 
0  1 bob 
1  2 larry 
4  3 peter 
5  4 rick 
+0

ありがとう温かい!それは最高です。同じフラグ値を持つ他の名前を取得する斬新な解決策がありますか? – moto

+0

@EliotJacksonあなたはhttps://chrisalbon.com/python/pandas_delete_duplicates.htmlをチェックすることができます – Wen

0

温家宝首相の答えは簡単ですが、もう一つの方法は、groupby()を使用して、nth()を使用してグループごとに最初のエントリを取ることです。

import pandas as pd 

df = pd.DataFrame({'flag':[1, 2, 1, 1, 3, 4], 
        'name':['bob', 'larry', 'alice', 'mary', 'peter', 'rick']}) 

print df.groupby('flag').nth(0) 

結果:

 name 
flag  
1  bob 
2  larry 
3  peter 
4  rick 
関連する問題