65729


pandasにてソートを行なったのですが、日付（判明日）の部分だけ、上手くソートされません。日の部分が二桁の際には上手く並び替えられているのですが、どうしても日が一桁の日時が無視してソートされてしまいます。どのようにすれば解決するでしょうか。

[code]

    df_sort=df3.sort_values(["居住地","判明日"])
    df_sort.head(50)`
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/Wr5Ed.png)](https://i.stack.imgur.com/Wr5Ed.png)  
[![画像の説明をここに入力](https://i.stack.imgur.com/1WSMr.png)](https://i.stack.imgur.com/1WSMr.png)  
[![画像の説明をここに入力](https://i.stack.imgur.com/iQGp1.png)](https://i.stack.imgur.com/iQGp1.png)


CC BY-SA 4.0
2020-04-18T02:53:49.370
65727
2020-04-18T06:14:02.277
2020-04-18T06:14:02.277
3060
39664
question
python pandas sort
pandas 日付のソートが上手くいきません


**判明日列** が 文字列型（str型）なのではないですか？

試しに

[code]

    print(df['判明日'].dtype)
    
[/code]

を実行してみて、`object` という結果が得られたら文字列です。

文字列のソートの場合、単純に文字列の先頭から比較しますので、例えば `'2020/3/9'` と `'2020/3/10'`
の比較では、文字列の先頭から`'2020/3/'`までが同じ値で、次の `'9'` と `'1'` の比較となるので `'2020/3/10'` の方が
**小さい値** と判断されてしまいます。

ということで、この場合は素直'判明日'列をdatetime型に変換した後にソートするべきかと思います。

[code]

    df3['判明日'] = pd.to_datetime(df3['判明日'])
    sorted_df = df3.sort_values(['居住地','判明日'])
    
[/code]

この方法であれば **判明日列** を日時データの比較でソートを行いますので、求める結果が得られると思います。


CC BY-SA 4.0
2020-04-18T03:19:19.817
65729
2020-04-18T03:38:33.443
2020-04-18T03:38:33.443
24801
24801
65727
answer