python - 如何调用通过 tkinter filedialog 导入的文件?
问题描述
我正在尝试创建一个非常简单的 GUI,它将导入文件,通过一些数据格式化代码运行它,并将其导出为 .xlsx 文件
该文件将是一个excel文件。一个例子是:
col1
a
b
c
我当前的python脚本是这样做的:
df = read_excel('file.xlsx')
mapping = {'a':'apple','b':'banana','c':'carrot'}
df = df.replace({"col1":mapping}, regex=True)
它返回:
col1
apple
banana
carrot
但现在我正在尝试创建一个将运行它的 GUI(:
这是我到目前为止的代码(我收到错误 ValueError: DataFrame constructor not proper called!):
import tkinter as tk
from tkinter import filedialog
import pandas as pd
from datetime import datetime, date
def UploadAction(event=None):
filename = filedialog.askopenfilename()
print('Selected:', filename)
df = pd.DataFrame(eval(data=filename))
mmapping = {'a':'apple','b':'banana','c':'carrot'}
df = df.replace({"col1":mapping}, regex=True)
print(df['col1'])
root = tk.Tk()
button = tk.Button(root, text='Open', command=UploadAction)
button.pack()
root.mainloop()
对于 excel 导出,我知道代码应该是:
writer = pd.ExcelWriter("newfile.xlsx",
engine='xlsxwriter',
datetime_format='yyyymmdd',
date_format='yyyymmdd')
df.to_excel(writer, sheet_name = ('Sheet1'))
workbook = writer.book
worksheet = writer.sheets['Sheet1']
worksheet.set_column('B:C', 20)
writer.save()
但我不确定如何将它包含在 GUI 程序中。
那么你有什么建议呢?
解决方案
你去:
=^..^=
import pandas as pd
import tkinter as tk
from tkinter import filedialog
def open_file():
# open file
filename = filedialog.askopenfilename()
# load data into data frame
data = pd.read_csv(filename, sep=" ", header=None)
return data
root = tk.Tk()
button = tk.Button(root, text='Open', command=open_file)
button.pack()
# do something with data
df_data = open_file()
df = df_data.drop(0, axis=1)
# save data to excel
df.to_excel("output.xlsx")
root.mainloop()
推荐阅读
- intellij-plugin - 对于针对 pycharm 的插件,您如何支持 com.intellij.psi?
- r - 使用 dplyr 为一组列创建降序排列
- excel - excel vba - open a previous saved document
- django - Django 如果图像为空
- ruby-on-rails - 如何指定项目中的样式表是编译/加载的?
- ruby-on-rails - Rails 4-为什么十进制列值在 Postgres 中四舍五入-用于存储纬度和经度
- r - 如何使用 R 中的正则表达式提取子字符串
- html - 导航栏链接位于下拉菜单之外的链接
- html - 不同目录中文件的相对路径?
- ios - 视图属性不会出现在情节提要中