私は新しく、何をしているのかわかりません。Stack Overflowを検索しましたが、何が間違っているのか理解できませんでした。
私がやりたいのは、列の値に基づいてデータフレームを並べ替えてから、新しい列を作成し、並べ替えられたリストに基づいてランク(この場合は1から4)を割り当てることです。次に、新しい列の値に基づいて再度実行します。
例:dfteams = dfteams.sort_values(['Wins']、ascending = [False])dfteams ['Win_rnk'] = range(1、len(dfteams)+ 1)
データフレーム(「dfteams」という名前が割り当てられています)で、DF全体を「Wins」列で並べ替えました。次に、「Win_rnk」という名前の新しい列を作成し、各行に1から4までのランク付けを割り当てました(これは、データフレームにある行数だからです)。
それはうまくいきます。そして、新しい統計に基づいて再度実行すると、それも完全に正常に機能します。
ただし、同じコードを取得して関数にドロップすると、すべての新しい列は同じ値になります(最後に並べ替えた列に基づいてランク付けされます)。また、スクリプトの一部として直接機能する理由はわかりませんが、関数を介して実行した場合は機能しません。
ヘッダー=チーム、勝ち、負け、ポイント
チーム1、7、1、560
チーム2、6、2、595
チーム3、5、3、403
チーム4、4、4、460
Win_rnk列を追加したい(上記のサンプルコードを使用):Header = Team、Wins、Losses、Points、Win_rnk
チーム1、7、1、560、1
チーム2、6、2、595、2
チーム3、5、3、403、3
チーム4、4、4、460、4
次に、Points_rnk列を追加します(例と同じコードですが、dfteams ['Points']を呼び出して並べ替えます。
ヘッダー=チーム、勝ち、負け、ポイント、Win_rnk、Points_rnk
チーム2、6、2、595、2、1
チーム1、7、1、560、1、2
チーム4、4、4、460、4、3
チーム3、5、3、403、3、4
私のスクリプトでは、それは機能します。コードを関数に移動したいのですが、移動すると、両方の新しい列が同じ値になります。
defranking_stats(dfteams):dfteams = dfteams.sort_values(['Wins']、ascending = [False])dfteams ['Win_rnk'] = range(1、len(dfteams)+ 1)
dfteams = dfteams.sort_values(['Points'], ascending=[False])
dfteams['Points_rnk'] = range(1, len(dfteams) + 1)
スクリプトで直接実行するのではなく、関数を呼び出すと、次のようになります。
ヘッダー=チーム、勝ち、負け、ポイント、Win_rnk、Points_rnk
チーム2、6、2、595、1、1
チーム1、7、1、560、2、2
チーム4、4、4、460、3、3
チーム3、5、3、403、4、4
Win_rnk列がPoints_rnkと同じ値で返されることに注意してください。それは私がやろうとしていることではありません。
プログラミングにまったく慣れていないので、基本的にわからないことがあるかもしれませんが、答えを探して見つけられなかった後、誰かが私が間違っていることを教えてくれることを願っています。
このような機能を作る、
def ranking_stats(dfteams):
dfteams = dfteams.sort_values(['Wins'], ascending=[False])
dfteams['Win_rnk'] = range(1, len(dfteams) + 1)
dfteams = dfteams.sort_values(['Points'], ascending=[False])
dfteams['Points_rnk'] = range(1, len(dfteams) + 1)
return dfteams
入力データフレーム-> dfteams、
Team Wins Losses Points
0 Team1 7 1 560
1 Team2 6 2 595
2 Team3 5 3 403
3 Team4 4 4 460
さて、ranking_stats()
このように呼び出します、
dfteams = ranking_stats(dfteams)
dfteams
出力:
Team Wins Losses Points Win_rnk Points_rnk
1 Team2 6 2 595 2 1
0 Team1 7 1 560 1 2
3 Team4 4 4 460 4 3
2 Team3 5 3 403 3 4
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加