将数据从 Excel 导入到 Treeview 时出现问题
Problem importing data from Excel to Treeview
我创建了一个树视图来显示从 excel 文件导入的数据。
def afficher():
fichier = r"*.xlsx"
df = pd.read_excel(fichier)
for row in df:
refOF = row['refOF']
refP = row['refP']
refC = row['refC']
nbreP = row['nbreP']
dateFF = row['dateFF']
self.ordreF.insert("", 0, values=(refOF, refP, refC, nbreP, dateFF))
但是我遇到了以下错误:
refOF = row['refOF']
TypeError: string indices must be integers
请告诉我如何解决这个问题。
在你的循环中,你实际上不是在行上迭代,而是在列名上迭代。这就是错误消息的原因,因为 row
是具有列名称的字符串,如果您使用 []
则需要指定整数或基于整数的切片,而不是字符串。
要使您的代码正常工作,您只需稍微修改代码以遍历行:
def afficher():
fichier = r"*.xlsx"
df = pd.read_excel(fichier)
for idx, row in df.iterrows():
refOF = row['refOF']
refP = row['refP']
refC = row['refC']
nbreP = row['nbreP']
dateFF = row['dateFF']
self.ordreF.insert("", 0, values=(refOF, refP, refC, nbreP, dateFF))
另一种方法是将原来的 for 循环替换为以下内容:
for tup in df[['refOF', 'refP', 'refC', 'nbreP', 'dateFF']].itertuples(index=False, name=None):
self.ordreF.insert("", 0, values=tup)
之所以有效,是因为 df.itertuples(index=False, name=None)
returns 一个在分配的列顺序中没有索引的常规元组。元组可以直接输入 values=
参数。
我创建了一个树视图来显示从 excel 文件导入的数据。
def afficher():
fichier = r"*.xlsx"
df = pd.read_excel(fichier)
for row in df:
refOF = row['refOF']
refP = row['refP']
refC = row['refC']
nbreP = row['nbreP']
dateFF = row['dateFF']
self.ordreF.insert("", 0, values=(refOF, refP, refC, nbreP, dateFF))
但是我遇到了以下错误:
refOF = row['refOF']
TypeError: string indices must be integers
请告诉我如何解决这个问题。
在你的循环中,你实际上不是在行上迭代,而是在列名上迭代。这就是错误消息的原因,因为 row
是具有列名称的字符串,如果您使用 []
则需要指定整数或基于整数的切片,而不是字符串。
要使您的代码正常工作,您只需稍微修改代码以遍历行:
def afficher():
fichier = r"*.xlsx"
df = pd.read_excel(fichier)
for idx, row in df.iterrows():
refOF = row['refOF']
refP = row['refP']
refC = row['refC']
nbreP = row['nbreP']
dateFF = row['dateFF']
self.ordreF.insert("", 0, values=(refOF, refP, refC, nbreP, dateFF))
另一种方法是将原来的 for 循环替换为以下内容:
for tup in df[['refOF', 'refP', 'refC', 'nbreP', 'dateFF']].itertuples(index=False, name=None):
self.ordreF.insert("", 0, values=tup)
之所以有效,是因为 df.itertuples(index=False, name=None)
returns 一个在分配的列顺序中没有索引的常规元组。元组可以直接输入 values=
参数。