You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter表格数据转Pandas报错:AttributeError: pandas无at属性

解决Pandas中AttributeError: module 'pandas' has no attribute 'at'的问题

错误核心原因

你代码里的关键问题是把pd(pandas模块本身)直接赋值给了df变量,而at是Pandas DataFrame对象的专属属性,不是模块的属性,因此触发了AttributeError。

代码中的其他问题

  • cells. Append([])是拼写错误,需改为cells.append([])(首字母小写)。
  • 原代码按列存储输入框,遍历逻辑会导致行列数据错位,需要调整数据收集方式。

修正后的完整代码

import tkinter as tk
import pandas as pd

root = tk.Tk()
frame = tk.Frame(root)
frame.pack()

titles = ['A1', 'A2', 'A3', 'A4', 'A5', 'A6','A7', 'A8','A9','A10']
cells = []
for column, title in enumerate(titles):
    # 添加列标题
    tk.Label(frame, text=title).grid(row=0, column=column)
    cells.append([])  # 修正拼写错误
    for row in range(5):
        text1 = tk.Entry(frame)
        text1.grid(column=column, row=row + 1)
        text1.insert(0, row)
        cells[column].append(text1)


def topamda():
    # 先按行组织所有输入数据
    data = []
    for row_idx in range(5):
        row_data = []
        for col_idx in range(len(titles)):
            # 获取输入框内容并转为float类型
            row_data.append(float(cells[col_idx][row_idx].get()))
        data.append(row_data)
    
    # 创建DataFrame并设置列名
    df = pd.DataFrame(data, columns=titles)
    print(df)

button = tk.Button(root, text="Data to Pandas DF", command=topamda)
button.pack()

root.mainloop()  # 启动tkinter主循环,确保窗口正常显示

关键修正说明

  1. 正确创建DataFrame:先将所有输入数据收集为二维列表,再通过pd.DataFrame()生成DataFrame对象,比逐个单元格赋值更高效。
  2. 调整遍历逻辑:由于cells按列存储输入框,遍历先按行索引再按列索引,保证数据对应关系正确。
  3. 补充主循环:原代码缺失root.mainloop(),会导致GUI窗口无法正常启动,这里补上。

内容的提问来源于stack exchange,提问作者abdullah qureshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:13:30