我想讀取一個csv文件到Pandas數據框中,並使用pandas.to_sql函數將最終數據框插入到Mysql中。python熊貓dataframe to_sql將對象轉換爲Mys INT INT數據類型產生不正確的結果
所有列都插入正確的數據,除了長度爲25個字符的數據框中的一列。此列(transaction_id)在MYSQL中被定義爲INT(25),我無法弄清楚爲什麼這個列有錯誤的數據。
奇怪的是,MySQL中的transaction_id列對於每個csv文件超過360K行具有相同的值。
任何幫助將是偉大的。
客戶端事務ID例如:
format: transaction id_page id-banner id
2343213254646775357496618_12-586542237
2343213254646775357881218_14-586542237
2343213254646775357886268_10-586542237
2343213254646775357886218_27-586542237
2343213254646775357886248_10-586542237
這裏是我的代碼:
xls = pd.ExcelFile(path_value)
df = xls.parse('report', skiprows=13, index_col=None, na_values=['NA'])
# remove last row
df = df[:-1]
df['transaction_datetime'] = pd.to_datetime(df['transaction_datetime'])
# add transaction date column to data frame:
df['transaction_date'] = df['transaction_datetime'].dt.date
df.loc[:, 'created_date'] = datetime.datetime.now()
# convert client transaction id into three parts
df['transaction_id'], df['placeholder'] = zip(
*df['Client Transaction ID'].apply(lambda x: x.split('_', 1)))
df['page_id'], df['banner_id'] = zip(*df['placeholder'].apply(lambda x: x.split('-', 1)))
df.drop('placeholder', axis=1, inplace=True)
df.drop('Client Transaction ID', axis=1, inplace=True)
print datetime.datetime.now()
# connect to mysql
engine = create_engine(
'connection string'
echo=False)
df.to_sql(name='table', con=engine, if_exists='append', index=False)
print datetime.datetime.now()
您能否提供可重現的樣本數據集(CSV格式爲3-5行)併發布您的代碼? – MaxU