2017-01-11 4 views
1

Iは、2つの列IDのデータフレームを有し、 、この場合のいくつかのIDが重複しているこのデータフレーム、ID = 2で条件

data = {'ID':[1,2,3,4,2],'salary':[1e3,1.2e3,1e3,2e3,1.5e3]} 

+----+--------+ 
| ID | salary | 
+----+--------+ 
| 1 | 1000.0 | 
+----+--------+ 
| 2 | 1200.0 | 
+----+--------+ 
| 3 | 1000.0 | 
+----+--------+  
| 4 | 2000.0 |  
+----+--------+  
| 2 | 1500.0 | 
+----+--------+ 

給与

を使用してデータ・フレーム内の一つの列に重複値を削除します。 重複IDごとに最高の給与を維持したい。

+----+--------+ 
| ID | salary | 
+----+--------+ 
| 1 | 1000.0 | 
+----+--------+ 
| 2 | 1500.0 | 
+----+--------+ 
| 3 | 1000.0 | 
+----+--------+  
| 4 | 2000.0 |  
+----+--------+  

答えて

1

あなたはIDごとの最大の給料を持つすべての行を先の二つ以上の列を持つデータフレームのためのより一般的なソリューションを提供します。

data = {'ID':[1,2,3,4,2],'salary':[1e3,1.2e3,1e3,2e3,1.5e3]} 
df = pd.DataFrame(data).assign(more_data=range(5)) 

df.loc[df.groupby('ID').salary.idxmax()] 

    ID salary more_data 
0 1 1000.0   0 
4 2 1500.0   4 
2 3 1000.0   2 
3 4 2000.0   3 
3

あなたは'ID'groupbyを実行し、最大値をとることができます。

df = df.groupby('ID', as_index=False)['salary'].max() 

結果の出力:

ID salary 
0 1 1000.0 
1 2 1500.0 
2 3 1000.0 
3 4 2000.0 
関連する問題