[英]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.