Pandas: ValueError: 整数列の列 2 に NA 値があります 質問する

Pandas: ValueError: 整数列の列 2 に NA 値があります 質問する

csv ファイルを自分のデータ型に読み込もうとすると、値エラーが発生します。それが機能し、すべての行が読み込まれて正しいことを確認する必要があります。

エラーの例:

Pandas: ValueError: Integer column has NA values in column 2

Pandas Python ライブラリで整数にキャストしようとしていますが、値があります。

ただし、読み込んだ csv ファイルは手動で入力されたテスト結果で構成されているため、いくつかの誤ったエントリがあるようです。

次のコマンドを使用して読み込みます:

test = pd.read_csv("test.csv", sep=";", names=pandasframe_names, dtype=pandasframe_datatypes, skiprows=1)

名前は A、B、C、D、E であり、正しく定義されています。

誤ったエントリがある場合、行全体を失わずにこれを処理する方法が必要です。

これが私のケースです。ヘッダーA、B、C、D、Eの5つの列を持つcsvテーブルを読み込むpandasデータフレームがあります。パラメータskiprows = 1を使用して行1をスキップします。

pandas_datatypes={'A': pd.np.int64, 'B':pd.np.int64, 'C':pd.np.float64, 'D':object, 'E':object}

私の行には 5 つの列があり、最初の 2 つは int64、3 つ目は float64、次の 2 つはオブジェクト (例: 文字列) です。

これらは私が読み込んだときのdtypeと同等です。意味dtype=pandas_datatypes

今では次のようなエントリがあります:

entry 1: 5; 5; 2.2; pedagogy; teacher (correct)
entry 2: 8; 7.0; 2.2; pedagogy; teacher (incorrect, as second is float instead of int)
entry 3: NA; 5; 2.2; pedagogy; teacher (incorrect, as first value has entered NA as is missing)
entry 4: none; 5; 2.2; pedagogy; teacher (incorrect, as first value has entered none as is missing)
entry 5: 8; 5; 2; pedagogy; teacher (incorrect, as third is int instead of float)

これを最も適切に処理するにはどうしたらよいでしょうか。また、これを確実に機能させるには何を追加する必要がありますか。 1 つのエントリが誤っている場合、行全体を失いたくありません。 NULL を入力する必要がありますか。 ただし、その場合、誰かが手動で確認できるようにフラグを立てる必要があります。

ベストアンサー1

Pandas には現在、整数が NA 値をサポートする拡張型があります。これらのフィールドには pd.NA が表示されます。

https://pandas.pydata.org/docs/user_guide/basics.html#basics-dtypes

Pandas Int64 型を使用すれば問題ありません。

pandas_datatypes={'A': 'Int64', 'B': 'Int64', 'C':pd.np.float64, 'D':object, 'E':object}

pandas 1.3.5 でテストしたところ、うまく動作しました。

おすすめ記事