2016-11-09 11 views
1

を丸め取得されていますPythonのデータフレームは、私はこのようなデータフレームを持っている

 ID   Value  Value2 

     1079712667 169945540 18.103862 
     1079712668 NA   100.509234 
     1079712669 2600000  28.833578 
     1079712670 14362445 101.525284 
     1079712671 6834165  NA 

私は

df.to_sql('TABLE',engine,if_exists='append',index=False) 

を使用してSQLにそれをアップロードし、私が取得:

 ID   Value   Value2 

     1079712667 1.69946e+008 18.1039 
     1079712668 2.28525e+006 100.509 
     1079712669 2.6e+006  28.8336 
     1079712670 NA   101.525 
     1079712671 6.83417e+006 NA 

すべて私はテキスト/数値の値が混在しているので、SQLの列はvarchar(500)です。番号の検索と精度を無効にするために何ができるかわからない。 ID値は、例えば、必要に応じてアップロードされています。

+2

これが正しいかどうかわかりません。しかし、SQL DBに書き込む間にすべてを 'str'にキャストすることによって_dtypes_を保持することができます。 'from sqlalchemy.typesインポート文字列。 df.to_sql( 'TABLE'、エンジン、if_exists = 'append'、index = False、dtype = {'Value':String、 'Value2:String}) ' –

+0

達成しようとしていることはあまり明確ではありません...どのような種類のデータ型をSQLテーブルに入れたいのですか?数字が文字列に変換された "NA"または "varchar"の代わりにNULLを持つ 'number'ですか? – MaxU

+0

ニッキー、これを試してみます。 MaxU - 数値を文字列に変換しました – Evgeni

答えて

1

問題は2年前に発生しました:here

dtype kwargをto_sqlで使用して、デフォルトの選択したタイプを上書きできるようにするための新しい機能が導入されました。

dtypeは、既知のSQLデータ型のいずれかに設定できます。 Hereは、これらのすべてのタイプへのリンクです。

dtype={'Value1': DOUBLE, 'Value2: DOUBLE} 

警告:あなたはgitの発行スレッド(here)でjorisvandenbosscheの答えを見てみると、そこに

dtypeは、値としてキーとSQLデータ型として列名を持つ辞書でなければなりません近似の問題かもしれない。


@Nickil Maveli:私はあなたのトリックが好きです。問題を避けるために、SQLデータベースに書き込む間にstrを使用するのが最適な解決策かもしれません。

関連する問題