2017-07-09 5 views
1

HashCodeが発生するImgFileNamesを取得する方法を教えてくださいはPythonで複数回使用してください。 注:最初のオカレンスだけを保持し、その値が中間または最後またはどこかにあっても残りを削除する。Pandasデータフレームで重複した値が複数回削除される

私は以下のようなデータフレームがあります。

ImgFileName   HashCodes 
Img_0001 - Copy.tif 162a47470f021a60 
Img_0001.tif  162a47470f021a60 
Img_0002.tif  1b5b5b1aa638dac8 
Img_0003.tif  adadadadadadadad 
Img_0004.tif  adadadadadadadad 
Img_0005 - Copy.tif a5b8648c8c666670 
Img_0005.tif  a5b8648c8c666670 
Img_0006.tif  71b392da6a699392 
Img_0007.tif  71b392da6a699392 
Img_0008.tif  b1b1f2fa6bf97292 
Img_0009.tif  86e82ae4c8b6c9c9 
Img_0010 - Copy.tif 86e8aae4c8b6c9c9 
Img_0010.tif  86e8aae4c8b6c9c9 

をそして、私は以下のように出力したい:

ImgFileName   HashCodes 
Img_0001 - Copy.tif 162a47470f021a60 
Img_0003.tif  adadadadadadadad 
Img_0005 - Copy.tif a5b8648c8c666670 
Img_0006.tif  71b392da6a699392 
Img_0009.tif  86e82ae4c8b6c9c9 
+0

ルック – tarashypka

答えて

1

あなたはduplicatedboolean indexingを必要とする - すべてのdupesと第2のフィルタ最後の値を第一のフィルタ(keep='last'):

df =df[ df.duplicated('HashCodes', keep=False) & df.duplicated('HashCodes')] 
print (df) 
    ImgFileName   HashCodes 
1 Img_0001.tif 162a47470f021a60 
4 Img_0004.tif adadadadadadadad 
6 Img_0005.tif a5b8648c8c666670 
8 Img_0007.tif 71b392da6a699392 
12 Img_0010.tif 86e8aae4c8b6c9c9 

または:[pandas.DataFrame.drop_duplicates](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html)で

df =df[ df.duplicated('HashCodes', keep=False) & df.duplicated('HashCodes', keep='last')] 
print (df) 
      ImgFileName   HashCodes 
0 Img_0001 -Copy.tif 162a47470f021a60 
3   Img_0003.tif adadadadadadadad 
5 Img_0005 -Copy.tif a5b8648c8c666670 
7   Img_0006.tif 71b392da6a699392 
11 Img_0010 -Copy.tif 86e8aae4c8b6c9c9 
+0

はそうありがとう多くのjezrael。 –

+0

お手伝いします!私の答えが役に立ったら、[accept](http://meta.stackexchange.com/a/5235/295067)を忘れないでください。答えの横にあるチェックマーク( '✓')をクリックしてグレー表示にします記入してください。ありがとう。 – jezrael

関連する問題