【问题标题】:Problem importing data from Excel to Treeview将数据从 Excel 导入 Treeview 时出现问题
【发布时间】:2020-11-21 22:45:18
【问题描述】:

我创建了一个树视图来显示从 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

请告诉我如何解决这个问题。

【问题讨论】:

  • 您是否尝试打印出for row in df 中的“行”以查看发生了什么?还请考虑在reproducible way 中提供示例数据。否则人们将无法测试。

标签: python excel pandas tkinter treeview


【解决方案1】:

另一种方法是将原来的 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) 在指定的列顺序中返回一个没有索引的常规元组。元组可以直接输入到values= 参数中。

【讨论】:

    【解决方案2】:

    使用您的循环,您实际上不是在遍历行,而是遍历列名。这就是错误消息的原因,因为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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 2023-03-23
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多