2017-12-17 7 views
0

で私はテレビの選択のIMDBの格付けを表すデータフレームには、次の列を示していますを選択し、データフレームの列の最小値は、カテゴリ

日、ep_no、エピソード、SHOW_TITLE、季節、評価

各ショーの最低評価エピソードを選択する必要がありますが、必要なすべての列を表示するのに問題があります。

私は正常に使用して、正しいデータを選択することができます。

df.groupby('show_title')['rating'].min() 

をしかし、これは唯一のショーのタイトルとそのショーの最安定格エピソードの評価が表示されます。

私はディスプレイにそれを必要とする: SHOW_TITLE、ep_no、エピソード、評価

が、私は単純なものから複雑なものまで、コードに様々な調整を試してみましたが、私は、私はちょうど割れするのに十分な経験していないと思いますよ今、この特定のパズル。

アイデア?

答えて

0

私があなたが欲しいものを理解していれば、this questionはこの質問に似ています。そして、次のコードはこのトリックを行うべきです。

df[df.groupby('show_title')['rating'].transform(min) == df['rating']] 
+0

ソリューションのすべてが働いたおかげで、これを1つは最も正確な結果を提供するようです。 –

0

一つのアプローチは、各ショーの最初の発生を維持しながら、その後showの重複を落とし、格付けによってデータフレームを並べ替えることです。

df.sort_values(by='rating').drop_duplicates(['show_title'], keep='first') 
0
# It's easy just do a sort by show_title , rating before using groupby 

df.sort_values(by=['show_title','rating'],inplace=True) 

# Now use groupby and return the first instance of every group by object 
# first row will automatically contain the minimum rating 
df1 = df.groupby('show_title').first() 
関連する問題