csv AttributeError:将日期传递到SQL Server时,“Series”对象没有属性“iterrows”

txu3uszq  于 12个月前  发布在  SQL Server
关注(0)|答案(1)|浏览(181)

下面的代码读取CSV文件,选择列GLTGV并将日期从美国转换为英国。然而,它给了我一个错误AttributeError: 'Series' object has no attribute 'iterrows'。我试图将其替换为iteritems,但不成功。任何人都可以帮助我iteritems或提出替代解决方案吗?

import pyodbc
import pandas
import os
import sys
import struct

try:
    currdir = os.path.abspath(__file__)
except NameError:  
    import sys
currdir = os.path.abspath(os.path.dirname(sys.argv[0]))
serverpath = os.path.join(currdir, 'serverlink.txt')

f=open(serverpath,"r")
lines=f.readlines()
servername=lines[0]
f.close()

print(servername)

serv = servername 
datab = 'BACKEND' 

cnxn = pyodbc.connect('Trusted_Connection=yes', driver = '{ODBC Driver 13 for SQL Server}',server = serv, database = datab)

import fileinput
import os
import csv
import pandas as pd

cwd = os.getcwd()

directory = (cwd + '\\')

for file in os.listdir(directory):
    if file.endswith( "USR02_FINAL.csv"):
        data = pd.read_csv(directory + "USR02_FINAL.csv", sep=",", usecols=['GLTGV'],  low_memory=False, encoding='latin-1')
        data = pd.to_datetime(data['GLTGV'], dayfirst=True, errors='coerce').dt.strftime("%d/%m/%Y").fillna("")    
print(data)
cursor = cnxn.cursor()
for index,row in data.iterrows():
    cursor.execute("INSERT INTO dbo.USR_02_ALL([GLTGV]) values(?)", row(['GLTGV']))
    cnxn.commit()
cursor.close()
cnxn.close()

字符串

cgh8pdjw

cgh8pdjw1#

基于原始帖子的两个问题是Pandas系列没有iterrows()属性,因为它们不是嵌套的,并且该系列没有iteritems()属性,这是因为它被删除了:

  • 自版本1.5.0起已弃用:iteritems已弃用,将在未来版本中删除。请改用.items。*

快速解决方法是使用.items(),它们适用于Pandas系列。正如G.安德森指出的,iterrows可以工作,如果data对象是DataFrame,但由于它只有一列,它会自动类型化为Series对象,并且存储在系列中的项目不会标记为“行”。如果您想将data保留为DataFrame,你可以用pandas.Series.to_frame方法把它转换成一个嵌套框架。
第一种解决方案:

for index,row in data.items():
    cursor.execute("INSERT INTO dbo.USR_02_ALL([GLTGV]) values(?)", row(['GLTGV']))

字符串
第二种解决方案:

print(data)
data.to_frame()
cursor = cnxn.cursor()
for index,row in data.iterrows():
    cursor.execute("INSERT INTO dbo.USR_02_ALL([GLTGV]) values(?)", row(['GLTGV']))

相关问题