2017-10-18 3 views
1

を返さ1人が2つの異なる学校に通った場合の最後の学校(「Will」のケースを参照)。グループをnumpyの配列は次のように見て、データフレームパンダ2つの文字列の列から

は、これまでのところ私が得た:

df = df.groupby('NAME')['SCHOOL'].unique().reset_index() 

戻る:

 NAME   SCHOOL 
0 Alex   [LBS] 
1 John   [Yale] 
2 Marc   [Yale] 
3 Miller  [Harvard] 
4  Tom   [HEC] 
5 Will [Harvard, UCLA] 

課題を:

  • ユニーク()学校だけでなく、最後の学校の両方を返します。
  • この行は、ではなくnp.arrayとしてSCHOOL列を返します。このdfでさらに作業するのは非常に困難です。
+0

「ユニーク」ではなく「最後」を試してください。 – IanS

+0

ありがとう@IanS!これは、すべての学校のためにではなく、ウィルの学校のためにnp.arrayを取り除くために働く。それについてのいかなる考えですか? – AlexSB

+0

私の誤り...私は 'df'変数を再定義しませんでした。 'last()'は完全に機能します。ありがとう!!私はPythonで新しくなっています。もしあなたが気にしなければ 'last()'がなぜ働いたのか説明できますか? (パンダのドキュメンテーションは私にはあまり役に立たなかった...) – AlexSB

答えて

1

どちらも@IanSのコメントに基づいて解決されています。

df = df.groupby('NAME')['SCHOOL'].last().reset_index() 

リターン:パラメータlast

 NAME SCHOOL 
0 Alex  LBS 
1 John  Yale 
2 Marc  Yale 
3 Miller Harvard 
4  Tom  HEC 
5 Will  UCLA 
1

使用drop_duplicatesとチェック重複の列を指定:必要ソートが追加した場合も

df = df.drop_duplicates('NAME', keep='last') 
print (df) 
    NAME SCHOOL 
0 John  Yale 
1 Marc  Yale 
2 Alex  LBS 
4 Will  UCLA 
5 Miller Harvard 
6  Tom  HEC 

last()代わりにunique()を使用して

sort_values

df = df.drop_duplicates('NAME', keep='last').sort_values('NAME') 
print (df) 
    NAME SCHOOL 
2 Alex  LBS 
0 John  Yale 
1 Marc  Yale 
5 Miller Harvard 
6  Tom  HEC 
4 Will  UCLA 
関連する問題