単一のデータフレームの行の異なる列の値をコンマで区切られた文字列に結合しようとしています。 MySQLデータベースで実行されます。私は67の異なる列を持っていますが、主に異なるサイズのデータフレームのコードの再利用性を最大限にするために、各列の名前を個別に扱うコードを書くことを避けようとしています。私は潜在的にどこでも1から2000の行を反復することができ、各行はINSERTクエリを持っています。パンダは、カスタムのためのデータフレームの列を繰り返します。挿入文字列
RecDate WindDir WindSpeed OutdoorTemperature OutdoorHumidity
20160321 121 3 67.5 43.8
20160322 87 5 73.1 53.2
20160323 90 2 71.1 51.7
20160324 103 7 68.3 47.0
Iはデータフレームの行ごとに文字列を作成したいのです:私のデータフレームは、以下が含まれている場合、例えば
、 INSERTテーブル名値には(20160321、121、3、67.5、43.8 ) テーブル名値にテーブル名値にINSERT(20160322、87、5、73.1、53.2) INSERTテーブル名値に(20160323、90、2、71.1、51.7) INSERT(20160324、103、7、68.3、47.0)
私は、データフレームのto_sql()functi私のデータベース構造で動作するようにコードを取得することができませんでした。
だから、私の目標は、各行をiterrate、および手動でカンマで区切られ、括弧内の文字列を作成することでした。私が試した、
for index, row in df.iterrows():
print('INSERT INTO tablename VALUES (%s, %s, %s, %s, %s)' % (row['RecDate'], row['WindDir'], row['WindSpeed'], row['OutdoorTemperature'], row['OutdoorHumidity']))
などの硬質私のコードは、「神託」とないようにするには
for index, row in df.iterrows():
string = ''
for x in range(len(row)):
string += '%s, ' % row[x]
print('INSERT INTO tablename VALUES (%s)' % string)
を私は日常と上記のコードを結合したエラーのうち、インデックスエラーを取得し、行くには正しいルートが何であるか本当にわからないのです:各列のインデックスの間にカンマを追加し、各行をiterrateします。私は自分のコードと思考プロセスの点検と、コードをどのように改善できるかについてのアドバイスを感謝します。私の目標は、できるだけ効率的にすることです(特に67の列がある場合)、コードの量を最小限に抑えますが、特に列の数が変更された場合は、さまざまな用途に柔軟に対応します。
ありがとうございました!
そのコードは機能します。ありがとうございました! 67個の{}セットと各列名への参照を含める必要がないかどうか疑問に思っていましたか?おそらく何とか列番号をループし、データフレーム行の終わりに達するまでコンマとその列の値を追加しますか? –
@AllenH私のソリューションを更新しました。それを確認して試してみてください。 – su79eu7k