Python パンダが CSV を読み取ると日時形式が変更され続けますが、文字列またはオブジェクト形式として明示的に指定した場合でも発生します

okwaves2024-01-24  4

2 種類の日時形式を含む CSV ファイルがあります。後で修正します。列を string / str / object として読み取るように指定してパンダの read_csv 関数を使用している間、両方の日付/時刻形式が Python の目的の日付/時刻形式に結合されます。

以下は私のデータの例です

Date  Cost
3/31/2015  3363
2020-16-07  5515

次のコマンドで読んだところ

a = pd.read_csv('data.csv',dtype={'Date':object})
b = pd.read_csv('data.csv',dtype={'Date':'string'})
c = pd.read_csv('data.csv',dtype={'Date':str})
d = pd.read_csv('data.csv',converters={i: str for i in range(100)})

すべての a、b、c、d は次のような同じ結果を生成します。

Date  Cost
2015-3-31  3363
2020-16-07  5515

dtypes チェックを実行しました。それは次を使用して返されます。

a.dtypes
b.dtypes
c.dtypes
d.dtypes

すべては日付列のオブジェクトと同じものを返します

前処理して日付と時刻を同じ形式にするために、希望する出力はデータの内容と同じである必要があります。

Date  Cost
3/31/2015  3363
2020-16-07  5515

----- 編集 -----

CSV ファイルを再確認してみましたExcel を使用して開き、ファイルを変更せずに保存を再クリックすると、4 つのコマンドで希望したものと同じ結果が得られます。何が問題なのかはわかりませんが、うまくいきます :)

しかし、なぜこのようなことが起こるのか、私はまだ知りたいと思っています。このファイルはクラウドからのもので、私がやったのは再度保存しただけです。

--- 編集 2 ----

メモ帳を使用して開いたところ、Python / Jupyter / Pandas ではなく、Excel がこのような異なる時刻形式を提供していました。

pd.read_csv('data.csv') だけを実行するとどうなるでしょうか?

– トレントマッキニーで

2020 年 9 月 3 日 2:50

1

@TrentonMcKinney こんにちは、お時間をいただきありがとうございます。CSV を再確認し、Excel を使用して変更を加えずに保存機能を再度実行しました。これで、Python によって希望の出力が得られました。とても奇妙です

– ウイング シャム

2020 年 9 月 3 日 3:01

2

ファイルをテキストエディタで開くのではなく、テキストエディタで開いてみましたか?ハンエクセル? Excel が CSV ファイル内のリテラル文字列を誤って表示している可能性があります (CSV ファイルでは 3 月の日付が実際には「2015-3-31」と表示されます)。

– リリスト

2020 年 9 月 3 日 3:13

1

@relizt ああ、ありがとう!メモ帳を使用して開いてみたところ、jupyter が返した内容が表示されました。ありがとう!

– ウイング シャム

2020 年 9 月 3 日 3:15

2

Jupyter に関してはそれほど問題はありません。しかし、オブジェクトはメモリ内に永続的であるため、売り込みで何かをしたり、実際にデータをリロードするのを忘れたりして、予期しない結果が生じることがあります。何かがおかしいと思われる場合は、カーネルを再起動してすべての出力をクリアしてください。

– トレントン・マッキニー

2020 年 9 月 3 日 3:16



------------------------

(元の投稿に関するコメントのディスカッションから、適切な手段と将来の他の人への参照のためにここにコピーします)

これは Excel で問題が発生する場合があります。 CSV は実際には次のようにフォーマットされる場合があります。

Date  Cost
2015-3-31  3363
2020-16-07  5515

Excel で開いている場合は、Excel実際には日付が 3/31/2015 や 2020-16-07 のように書式設定されているかのように表示できます。 pandas が csv を読み取るとき、Excel の解釈なしでリテラル文字列が表示されます。

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。