私はExcelスプレッドシートを持っており、そこから重要なデータをOracleテーブルにエクスポートしたいと考えています。値/文字列に達するまでのインデックス値DataFrame
Excelシートには、特定のセルに不要なデータがあります。また、利用可能な魚と所望の魚との間の差異を示す途中で分割する。私はこの違いを捕らえる必要があります。
私の目標はすべてのデータをエクスポートすることですが、Oracleデータベースでは、提供される魚と目的の魚を区別する必要があります。インデックスがQUOTA TO BUY
に達するまで列をインデックスする方法はありますか?したがって、1
の最初のチャンクをask
カラムにエクスポートし、1
という2番目のチャンクをbid
カラムにエクスポートすることができます。
私がこれまでに試したコードは、Excelテーブルの画像と同様に以下のとおりです。助けてくれてありがとう。
import os
import numpy as np
import pandas as pd
import cx_Oracle
import re
from dateutil import parser
dsnStr = cx_Oracle.makedsn("sole.noaa.gov", "1526", "sole")
con = cx_Oracle.connect(user="user", password="passsword", dsn=dsnStr)
path = 'Z:\\excel_file_to_convert'
#pattern = re.compile(r'Sent:(.+?)(?=<br/>)')
for filename in os.listdir(path):
file_path = os.path.join(path, filename)
if os.path.isfile(file_path):
df = pd.read_excel(file_path)
print("df is:", df)
print("column 1 I think:", df[:DESIRED STOCK])
print("row 1:", df.loc[0])
print("row 2:", df.loc[1])
print("row 3:", df.loc[2])
print("row 4:", df.loc[3])
print("row 5:", df.loc[4])
#d = parser.parse(df, fuzzy=True)
#print(d)
#df['DATE'] = pd.to_datetime(df['DATE']) # convert date column to datetimes
#latest_date = df['DATE'].max() # find the latest datetime
#latest_rows = df[df['DATE'] == latest_date] # use index filtering to choose only columns equal to latest date
#print ("latest_rows is:", latest_rows)
cursor = con.cursor()
exported_data = [tuple(x) for x in df.values]
sql_query = ("INSERT INTO ROUGHTABLE(species, date_posted, stock_id, pounds, money, sector, ask)" "VALUES(:3, :1, :2, :4, :5, 'Sustainable Harvest Sector', '1')")
#sql_query = ("INSERT INTO DATABASE(species, trade_date, trade_id, pounds, advertised_price, email_year, email_month, email_day, sector, ask)" "VALUES(:3, :1, :2, :4, :5, :6, :7, :8, 'Sustainable Harvest Sector', '1')")
cursor.executemany(sql_query, exported_data)
con.commit() #commit to database
cursor.close()
con.close()
私はこれを繰り返し実行する必要はありますが....それは、このビットのSQLコードが他のExcelシートでは機能しないことを意味しますか? – theprowler
すべて同じ形式の場合は、複数のスプレッドシートにコピーして貼り付けることができます。 'セクター'や 'ask' /' bid'列のように編集が必要な部分を編集して、シートごとに正しいようにしてください。一握りのシートのためにそれをやっているのであれば、それはうまくいくでしょう。しかし、あなたが何百ものためにそれをやっているなら、毎週それをやっていれば、あなたが始めたようなプログラム的な解決策を書く時間を費やす価値があるかもしれません。 – MT0
うんうん。私はそれを約120分間しなければならず、その後は一週間に一度それをしなければならない。だから私は理想的には、私はプログラムがそれをやりたいと思う。正直言って、スプレッドシートのほとんどは「Available」と「Desired」の間に分かれていないので、私はちょうど手でこれを入力するつもりです。しかし、私が今実行している問題は、最初のセルで常に 'LISTING'に続く日付が必要なことです。そのために私はRegExを使用しますが、私はRegExではあまり良くありませんので、これはしばらく時間がかかります。それから私はすべての重要なデータのキャプチャに取り組む必要がありますが、最初の2つのタイトルセル – theprowler