pythonで次の表について、
国 会社 個数
Japan A 100
Japan A 50 ←消したい
China B 100 ←消したい
China B 1000
列の国、会社が同じ重複している行を消したいのですが、
さらに条件を加えて個数が大きい方を残したいです。
drop_duplicates関数で行おうとしてたのですが、
python初心者の者で、よく分かりません。
ご教示頂いてもよろしいでしょうか。よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
drop_duplilcates()の引数 subset と keep を使います
最初にsort_values()で昇順でソートして、drop_duplicates()で keep='last'として、最後のものを残します。
python
1import pandas as pd 2 3df = pd.DataFrame({ 4 '国':['Japan', 'Japan', 'China', 'China'], 5 '会社':['A','A','B','B'], 6 '個数':[100,50,100,1000] 7}) 8 9# ①ソート 10df = df.sort_values(['国','会社','個数']) 11 12# ②重複削除 ソートの際に昇順に並べたのならkeep='last'(もしソートの際に降順に並べたならkeep='first') 13df = df.drop_duplicates(subset=['国','会社'], keep='last') 14 15# ③必要に応じて:並び順を①のソート前に戻す 16df = df.sort_index() 17
投稿2021/11/10 10:36
編集2021/11/10 10:39総合スコア19
0
ベストアンサー
もとのDataFrameのIndex情報が要らないのであれば
Python
1df.groupby(('国','会社')).max().reset_index() 2# 国 会社 個数 3#0 China B 1000 4#1 Japan A 100
で良い気がします。
もとのDataFrameのIndex情報を保持したいのであれば
Python
1df.loc[df.groupby(('国','会社'))['個数'].idxmax()].sort_index() 2# 会社 個数 国 3#0 A 100 Japan 4#3 B 1000 China
でどうでしょうか。
投稿2019/02/18 01:23
総合スコア15898
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
ぱっと調べた感じではSQLの集約関数のような機能は標準ではないので、簡単に実現するなら以下のような感じでしょうか?
出力形式等は実際の適用する場所に合わせて調整してみてください。
Python
1import pandas 2 3dataframe = pandas.DataFrame({ 4 'country':['Japan', 'Japan', 'China', 'China'], 5 'company':['A','A','B','B'], 6 'value':[100,50,100,1000] 7}) 8 9for country in dataframe['country'].unique().tolist(): 10 for company in dataframe.query('country == "{}"'.format(country))['company'].unique().tolist(): 11 value = max(dataframe.query('country == "{}"'.format(country)).query('company == "{}"'.format(company))['value'].tolist()) 12 print('country:{} company:{} value:{}'.format(country, company, value))
投稿2019/02/18 01:14
総合スコア317
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。