[英]Dropping the index column from DataFrame in a .csv file in Pandas
我這里有一個 python 腳本:
import pyodbc
import pandas as pd
from sqlalchemy import create_engine
import csv
df = pd.read_sql("""script_generator""", conn)
for count, row in df.iterrows():
row.to_csv('generatedfile{}.sql'.format(count), index=False, index_label=False, quoting=csv.QUOTE_NONE, escapechar=' ')
當我運行它時,它會創建單獨的 csv 文件,這些文件的格式為 sql。output 在 generatedfile2 中看起來像這樣:
2
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'table1') AND type in (N'U'))
BEGIN
PRINT 'DROPPING TABLE [dbo].[table1]....'
DROP TABLE [dbo].[table1];
END;
文件的 rest 具有相同的格式。 有什么辦法可以更改我的代碼以擺脫代碼開頭的“2”嗎? 因此它無法在 SQL 中正常運行。 出於某種原因 index_label=False 不會擺脫它。 非常感謝!
運行DataFrame.iterrows
時, row
呈現為 Pandas 系列而不是數據框。 所以實際上,您正在運行Series.to_csv
。
for count, row in df.iterrows():
print(type(row))
# <class 'pandas.core.series.Series'>
# <class 'pandas.core.series.Series'>
# <class 'pandas.core.series.Series'>
...
但是,此方法不適用於迭代單個列。 相反,考慮直接在列的值上循環(假設完全是您的 SQL 語句)。 在每次迭代中,使用典型的open
+ write
方法創建相應的 csv 文件。 使用enumerate
對文件后綴進行順序編號。
for count, val in enumerate(df['sql_string_column']):
with open('generatedfile{}.sql'.format(count), 'w') as f:
f.write(val)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.