表題の通り、pythonでpandasを使っていますが、dataframeの処理で実現したいことができない状態です。
例
A列が、A1,A2,A3...というカテゴリ変数
B1列/B2列が、全データをある基準に基づいてランク付けされた順位(1,2,...,全データ数)
C列が、空欄
とします。
やりたい処理は、A列がA1のデータのB1の上位n位までのデータのC列に1を入れ、A列がA2のデータのB2の上位n位までのデータのc列に1を入れるという処理です。
df.loc[(df[B1] <= n) & (df[A] == A1), C] = 1
df.loc[(df[B2] <= n) & (df[A] == A2), C] = 1
現在、このような処理を書いているのですが、これだとB1とB2の順位がどちらもn以下の場合重複して選ばれてしまいます。
やりたい処理としては重複してほしくなく、1行目の処理はA1のデータだけでB1のランキング上位n個、2行目はA2のデータだけでB2のランキング上位n個のものを選定(=c列に1を代入)したいです。
いい方法が思いつかず、どうしたら実現できますでしょうか?
pythonのバージョンは3.7.7です
回答3件
あなたの回答
tips
プレビュー