解説
2より10が先に来る?AIの並べ替えで数字と文字列を分けよう
数の小さい順に並べたつもりが、10、100、2になった。数字の見た目でも、文字列として比べているのかもしれないよ。

数の小さい順に並べたつもりが、10、100、2になった。数字の見た目でも、文字列として比べているのかもしれないよ。
このページでは、数値の順序と文字列の順序を小さな例で知る。用意するのは架空の2、10、100だけ。実際の顧客番号や、元の表を直接書き換える必要はないよ。
数として見るか、文字として見るか
2と10を数で比べるなら、2が小さい。一方、文字列の並びでは、最初の文字などから順に比較する。Pythonの通常の文字列の順序では、10や100が2より先になる。
| 扱い | この例の並び |
|---|---|
| 数値 | 2、10、100 |
| 文字列 | 10、100、2 |
すべてのソフトが同じ並べ方とは限らない。言語や地域に合わせた順序、数字を自然に扱う並べ方などもあり、使う機能の仕様を見ることが大切だよ。
Pythonで同じ値を比べる
values = ['2', '10', '100']
print(sorted(values))
print(sorted(values, key=int))
最初は['10', '100', '2']、次は['2', '10', '100']になる。二つ目は比較のキーを整数へ変換するけれど、返すリストの要素は元の文字列だよ。見た目の値が同じでも、比較する方法を変えた例なんだ。
IDを勝手に数へ変えない
001と1が、別の正式な番号として使われる場合もある。電話番号や郵便番号も、計算する数とは限らない。数値化すると先頭の0などを失うことがあるので、目的を確認しよう。
空欄、単位付きの12cm、桁区切り、マイナスなどがある表では、変換できる条件も別に必要。AIが都合よく値を補っていないか確かめたいね。
AIへ頼むときの確認
- 並べたい列を指定する。
- 数値・文字列・日付のどの意味で比べるか決める。
- 元の表記を残すよう伝える。
- 空欄や不正な値を別に確認する。
- 同じ値のときの順序も、必要なら決める。
期待するのは、目的の順序になり、元の値や行の対応が失われないこと。並べ替え前の控えも残しておこう。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。