質問: int() df1.sort_values(by='X') ``` ### 試したこと 最初期の実現の構想としては、Xの列(カラム)においてMax値とMin値を求め、 (Max-Min)/10で出てきた値を適当な変数"variable"などと置いて if文を使い「もしXの値が0≦該当の値≦Xのmin値ならX coordinateに"1"、もし違う場合は Xのmin値≦該当の値≦(Xのmin値)+variable ならX coordinateに"2"、 というようなプログラムを考えていました。(Xの値が10行を境に少しずつ増えるので...) プログラムのコードが複雑になって、明らかに自分のキャパを超えてしまうので、現在質問させて頂いたようなコードの書き方を質問させて頂きました。 ### 補足情報(FW/ツールのバージョンなど) Anaconda Python Jupyter notebook お忙しいとは思いますが、よろしくお願いいたします。 情報に不足がありましたら、ご指摘お願いいたします。
回答: 対象のデータフレームが 『X列は既に昇順に並んでおり、indexは0番から順に振られている』という前提であれば、can110さんの方法と同様に indexを使って算出するのが良いかと思います。これは単に index値を10で割り、1を足すと良いので ``` df['X coordinate'] = (df.index // 10) + 1 ``` となります。結果を"文字列" で得たいのであれば`astype()`を使って ``` df['X coordinate'] = ((df.index // 10) + 1).astype(str) ``` です。 X列が昇順に並んでないのであれば `Series.rank()` を使うと良いかと思います。 rank() は データを昇順に1から順に番号を振るメソッドです。あとはこれに 9 を足して10で割ると目的の値が得られるかと思います。 ``` df['X coordinate'] = (((df['X'].rank(method='first') + 9) // 10)).astype(int) ```