前提・実現したいこと
pandasで、教科(Subject)ごとに点数(Point)の順位付けを行いたいのですが、下記のようなコードを書くとエラーが出てしまいます。
自分の中では、groupbyを使うと引数に指定したものがindexになっており(今回のresultなら"Subject")、下記のresultをdfと結合するにはjoinの第二引数としてdfのcolumnの一つである"Subject"を指定する必要があると考えました。しかし実際には第二引数を指定するとエラーが生まれ、逆に第二引数を何も指定しないとうまくいきました。
このほかにもconcatを使って結合するとうまくいくこと自体はわかったのですが、下記のコードでうまくいかない理由がわからないので、教えていただければ幸いです。よろしくお願いいたします。
発生している問題・エラーメッセージ
You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat
該当のソースコード
import pandas as pd df = pd.DataFrame( [ ['Alice', '国語', 87], ['Alice', '算数', 72], ['Bob', '国語', 65], ['Bob', '算数', 92], ], columns=['Name', 'Subject', 'Point']) result = df.groupby("Subject").Point.rank(ascending = False).rename("Rank") df.join(result, "Subject")
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/02 08:21