下面的代码读取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()
字符串
1条答案
按热度按时间cgh8pdjw1#
基于原始帖子的两个问题是Pandas系列没有
iterrows()
属性,因为它们不是嵌套的,并且该系列没有iteritems()
属性,这是因为它被删除了:快速解决方法是使用.items(),它们适用于Pandas系列。正如G.安德森指出的,iterrows可以工作,如果
data
对象是DataFrame,但由于它只有一列,它会自动类型化为Series对象,并且存储在系列中的项目不会标记为“行”。如果您想将data
保留为DataFrame,你可以用pandas.Series.to_frame
方法把它转换成一个嵌套框架。第一种解决方案:
字符串
第二种解决方案:
型