TypeError:期望数字数据

我很难找出这个错误的意思,因为这个问题已经没有太大的帮助。

难道说我的Oracle表只需要接收数字而不是字母? 这不可能是这样的,因为我的列设置为允许VarChar使数字和字母都适合。

我曾经以为是因为我的DataFrame中有NaN ,所以我用0代替了所有的,我仍然收到这个错误。

最终,我想将所有这些从Excel文件中parsing出来的数据导出到Oracle表中。

任何帮助解决这个将不胜感激。

我的数据框:

 S USTAINABLE H ARVEST S ECTOR| QUOTA LISTING JUN 11 2013 Unnamed: 1 \ 0 AVAILABLE QUOTA 0 1 DATE TRADE ID 2 6/4/13 130196 3 5/28/13 130158 4 6/4/13 130210 5 5/14/13 130079 6 6/4/13 130187 7 6/4/13 130208 8 6/11/13 130249 9 6/4/13 130204 10 5/28/13 130148 11 5/28/13 130149 12 5/28/13 130157 13 5/21/13 130105 14 5/21/13 130106 15 6/4/13 130205 16 6/11/13 130250 17 6/4/13 130206 18 6/11/13 130248 19 QUOTA TO BUY 0 20 DATE TRADE ID 21 6/11/13 130239 22 5/14/13 130074 23 3/26/13 130006 24 5/14/13 130075 25 5/7/13 130023 26 5/14/13 130039 27 1 0 Unnamed: 2 Unnamed: 3 Unnamed: 4 0 0 0 0 1 AVAILABLE STOCK AMOUNT SALE PRICE 2 COD GBW 10000 0.6 3 COD GBW 300 0.6 4 HADDOCK GBE UP TO 30,000 OFFERS 5 PLAICE 1000 0.45 6 WHITE HAKE UP TO 25,000 0.5 7 WHITE HAKE 4000 0.5 8 WINTER GB 3300 0.25 9 WINTER GB 10000 0.48 10 WINTER GB 1U0P 0T,0O00 0.25 11 WINTER GB UP TO 10,000 0.4 12 WINTER GB 1400 0.25 13 WINTER GB 10000 0.5 14 WINTER GB 10000 0.5 15 WINTER GOM 1000 0.38 16 WINTER SNE 6500 0.4 17 WINTER SNE 3000 0.63 18 YELLOWTAIL GOM 2000 1.25 19 0 0 0 20 DESIRED STOCK AMOUNT BUY PRICE 21 COD GOM UP TO 14,000 2.1 22 COD GOM 20000 INQUIRE 23 COD GBE ANY 1.5 24 HADDOCK GOM 10000 INQUIRE 25 HADDOCK GOM UP TO 6,000 0.75 26 WHITE HAKE UP TO 100,000 0.3 27 0 0 0 <class 'pandas.core.frame.DataFrame'> 

我的代码:

 import os import numpy as np import pandas as pd import cx_Oracle import re from dateutil import parser from datetime import datetime dsnStr = cx_Oracle.makedsn("sole.noaa.gov", "1526", "sole") con = cx_Oracle.connect(user="user", password="password$", dsn=dsnStr) path = 'Z:\\excel_file_to_parse' pattern = re.compile(r'Listing(.+)', re.IGNORECASE) 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) a = pattern.findall(str(df)) print("a:", a) new_a = str(a) print("new_a:", new_a) #datetime_object = datetime.strptime(new_a, '%b %d %Y') #print("date:", datetime_object) print("row 1:", df.loc[0]) df = df.fillna(0) print("df wihtout 0's is:", df) 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_name, ask)" "VALUES(:3, :1, :2, :4, :5, 'Sustainable Harvest Sector', '1')") cursor.executemany(sql_query, exported_data) con.commit() #commit to database cursor.close() con.close() 

export_data的打印exported_data

 exported_data: [('AVAILABLE QUOTA', 0, 0, 0, 0), ('DATE', 'TRADE ID', 'AVAILABLE STOCK', 'AMOUNT', 'SALE PRICE'), ('6/4/13', 130196, 'COD GBW', 10000, 0.6), ('5/28/13', 130158, 'COD GBW', 300, 0.6), ('6/4/13', 130210, 'HADDOCK GBE', 'UP TO 30,000', 'OFFERS'), ('5/14/13', 130079, 'PLAICE', 1000, 0.45), ('6/4/13', 130187, 'WHITE HAKE', 'UP TO 25,000', 0.5), ('6/4/13', 130208, 'WHITE HAKE', 4000, 0.5), ('6/11/13', 130249, 'WINTER GB', 3300, 0.25), ('6/4/13', 130204, 'WINTER GB', 10000, 0.48), ('5/28/13', 130148, 'WINTER GB', '1U0P 0T,0O00', 0.25), ('5/28/13', 130149, 'WINTER GB', 'UP TO 10,000', 0.4), ('5/28/13', 130157, 'WINTER GB', 1400, 0.25), ('5/21/13', 130105, 'WINTER GB', 10000, 0.5), ('5/21/13', 130106, 'WINTER GB', 10000, 0.5), ('6/4/13', 130205, 'WINTER GOM', 1000, 0.38), ('6/11/13', 130250, 'WINTER SNE', 6500, 0.4), ('6/4/13', 130206, 'WINTER SNE', 3000, 0.63), ('6/11/13', 130248, 'YELLOWTAIL GOM', 2000, 1.25), ('QUOTA TO BUY', 0, 0, 0, 0), ('DATE', 'TRADE ID', 'DESIRED STOCK', 'AMOUNT', 'BUY PRICE'), ('6/11/13', 130239, 'COD GOM', 'UP TO 14,000', 2.1), ('5/14/13', 130074, 'COD GOM', 20000, 'INQUIRE'), ('3/26/13', 130006, 'COD GBE', 'ANY', 1.5), ('5/14/13', 130075, 'HADDOCK GOM', 10000, 'INQUIRE'), ('5/7/13', 130023, 'HADDOCK GOM', 'UP TO 6,000', 0.75), ('5/14/13', 130039, 'WHITE HAKE', 'UP TO 100,000', 0.3), (1, 0, 0, 0, 0)]