非常抱歉,我之前的回答有误。在这种情况下,空白列可能是由于DataFrame中存在NaN值导致的。您可以使用pandas库中的.dropna()方法来删除包含NaN值的列。以下是修正后的示例代码:
import tkinter as tk
from tkinter import ttk
import pandas as pd
def filter_dataframe():
keyword = entry.get()
filtered_df = df[df['绰号'].str.contains(keyword)]
display_dataframe(filtered_df)
def display_dataframe(df):
treeview.delete(*treeview.get_children())
for index, row in df.iterrows():
treeview.insert('', 'end', values=row.tolist())
# 创建Tkinter窗口
window = tk.Tk()
# 创建一个Treeview控件
treeview = ttk.Treeview(window)
# 添加表头
columns = df.columns.tolist()
treeview['columns'] = columns
for column in columns:
treeview.heading(column, text=column)
treeview.column(column, width=100) # 设置列宽度
# 从Excel读取数据到DataFrame
df = pd.read_excel('data.xlsx')
# 删除包含NaN值的列
df = df.dropna(axis=1, how='all')
# 在Treeview中显示DataFrame的所有数据
display_dataframe(df)
# 创建一个Entry控件用于输入筛选关键字
entry = tk.Entry(window)
entry.pack()
button = tk.Button(window, text='查询', command=filter_dataframe)
button.pack()
# 显示TreeView
treeview.pack()
window.mainloop()
此版本的代码将使用.dropna()方法删除包含NaN值的列,并正确设置了Treeview的列宽度。希望这次对您有所帮助!如果您还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |