1
このエラーを避ける最も良い方法は何ですか?Pythonが整数を浮動小数点に変換する(Postgresデータベース)
DataError: invalid input syntax for integer: "669068424.0" CONTEXT: COPY sequence_raw, line 2, column id: "669068424.0"
各列のデータ型を指定したpgadminを使用してテーブルを作成しました。私はパンダでデータを読んで何らかの処理をしています。私は明示的に列のリストを提供し、それらが.astype(int)であると言うことができますが、それは必要ですか?
整数の後に.0がある理由は、データにNaNがあり、整数ではなく浮動小数点に変換されるためです。これを回避する最良の方法は何ですか?私はパンダのプレリリースで0.19を見ました。これは、まばらなデータのより良い取り扱いがあり、これは万が一カバーされていますか?
あなたはCSVでのフロートの形式を指定するto_csv
ため
float_format
パラメータを使用することができます
def process_file(conn, table_name, file_object):
fake_conn = pg_engine.raw_connection()
fake_cur = fake_conn.cursor()
fake_cur.copy_expert(sql=to_sql % table_name, file=file_object)
fake_conn.commit()
fake_cur.close()
df = pd.read_sql_query(sql=query.format(**params), con=engine)
df.to_csv('../raw/temp_sequence.csv', index=False)
df = open('../raw/temp_sequence.csv')
process_file(conn=pg_engine, table_name='sequence_raw', file_object=df)
ですから、 'float'列を持つテーブルを持っていますが、それをエクスポートしたいですint列としてcsv?それはあなたが求めていることですか? – univerio
これらはすべてint(秒数)です。ただし、NULLを持つ行があります。 Pythonまたはpandasは、NaN整数を処理しないため、これらの列を浮動小数点に変換します。列が整数として認識されるようにするには、0を入力する必要があります(これは無駄に思えますが、1日に約200万行、多くの行に空白があります)。 – trench
あなたの正確な状況はまだかなり不明です。私が正しく理解しているかどうかを見てみましょう。 'int'カラムを使ってテーブルを手動で作成しましたが、CSVにエクスポートしようとすると何とか' float'カラムが返されますか? – univerio