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主循环,确保窗口正常显示
关键修正说明
- 正确创建DataFrame:先将所有输入数据收集为二维列表,再通过
pd.DataFrame()生成DataFrame对象,比逐个单元格赋值更高效。 - 调整遍历逻辑:由于
cells按列存储输入框,遍历先按行索引再按列索引,保证数据对应关系正确。 - 补充主循环:原代码缺失
root.mainloop(),会导致GUI窗口无法正常启动,这里补上。
内容的提问来源于stack exchange,提问作者abdullah qureshi
相关产品推荐
相关产品推荐

