繁体   English   中英

创建选择框以基于Excel列中的唯一性传递字符串值

Create selection box to pass string value based on uniques in Excel column

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

python的新手,但是我正在尝试,所有建议都值得赞赏。

我有一个主数据表,已将其加载到数据框中。 这样,我就可以将“ Delivery BA”列中的值硬编码为仅返回具有该值的数据帧。 我还能够列出并计算列中的唯一值。 我目前有一个单元格,其中显示为“交付BA”列选择的过滤条件的字符串值。

我最想做的就是能够通过一个包含该列中所有唯一值的选择框来提示用户,然后在用户选择一个值时,将该值传递给dataframe参数,以便它创建一个仅具有条目“交付BA”的数据帧,最好无需访问在过滤字符串单元格中传递的值。

我进行了搜索,因此对是否已经回答或类似的内容表示歉意。

请看看我到目前为止有什么小代码。

变量说明:
d:“交货BA”列中的条目数
克:不确定我在这里做什么; 我相信尝试将该列标识为“投放BA”
h:列中特定公司的条目
j:访问包含所选过滤条件的字符串值的单元格
问:这没有实现我想要的; 我现在不确定我想要什么
x:“交货BA”列中的唯一值
y:“投放BA”列中的唯一值数量。 在撰写本文时,它位于739。

抱歉,如果我发布了任何随意的或不足的信息。 再次感谢你。

编辑:花了整天的时间之后,我终于制作了一个有效的python程序。 我感到愚蠢的骄傲。 其中很多是经过编译和调整的代码片段,但最终它们可以一起工作。

import pandas

data = pandas.read_excel('****', header = None).values

df = pandas.DataFrame(data)
new_header = df.iloc[0]
df = df[0:]
df.columns = new_header

d = df['Delivery BA'].value_counts()

g = df.groupby('Delivery BA', as_index = False)

x = df['Delivery BA'].unique()
y = df['Delivery BA'].nunique()

xd = pandas.DataFrame(x)

xdList = x.tolist()

xdLists = sorted(xdList, key = str.lower)

import tkinter
from tkinter import *

class simpleapp_tk(tkinter.Tk):

    def __init__(self, parent):
        tkinter.Tk.__init__(self, parent)
        self.part = parent
        self.initialize()
        self.update_list()

    def initialize(self):        
        self.grid()
        self.create_widgets()
        self.lbox.bind('<ButtonRelease-1>', self.selecting)
        button = tkinter.Button(self, text=u"Confirm Selection",command=self.OnButtonClick)
        button.grid(column=0,row=2)
        self.labelVariable = tkinter.StringVar()
        label = tkinter.Label(self,textvariable=self.labelVariable,anchor="center",fg="white",bg="blue")
        label.grid(column=0,row=3,columnspan=2,sticky='EW')
        self.grid_columnconfigure(0,weight=1)
        self.resizable(False,False)

    def create_widgets(self):
        self.search_var = StringVar()
        self.search_var.trace("w", lambda name, index, mode: self.update_list())
        self.entry = Entry(self, textvariable = self.search_var, width = 26)
        self.yScroll = tkinter.Scrollbar(self, orient=VERTICAL)
        self.yScroll.grid(row=1,column=1, sticky=N+S)
        self.lbox = Listbox(self, width=45, height=15, yscrollcommand=self.yScroll.set)        
        self.entry.grid(row=0, column = 0, padx = 10, pady = 3)
        self.lbox.grid(row=1, column=0, padx=10, pady=3)
        self.yScroll['command'] = self.lbox.yview
        self.update_list()

    def update_list(self):
        search_term = self.search_var.get()

        lbox_list = [*xdLists]

        self.lbox.delete(0, END)

        for item in lbox_list:
            if search_term.lower() in item.lower():
                self.lbox.insert(END, item)

    def selecting(self,event):
        sel = self.lbox.curselection()
        seltext = self.lbox.get(sel)
        self.labelVariable.set(seltext)

    def OnButtonClick(self):
        global confirmedsel
        confirmedsel = ""
        sel = self.lbox.curselection()
        seltext = self.lbox.get(sel)
        confirmedsel = seltext
        print(confirmedsel)
        app.destroy()

if __name__=="__main__":

    app = simpleapp_tk(None)
    app.title('Please choose a company!')
    print ('Starting mainloop()')
    app.mainloop()

from shutil import copyfile
import datetime
import openpyxl
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl import *

template_file = '***'
output_file = confirmedsel + " " + "-" + " " + datetime.datetime.today().strftime('%Y-%m-%d') + ".xlsx"
print(output_file)

h = df.loc[df['Delivery BA'] == confirmedsel]

wb = openpyxl.load_workbook(template_file)
ws = wb.get_sheet_by_name('Sheet1')

ws['A1']

for r in dataframe_to_rows(h, index=False, header=True):
    ws.append(r)

ws.delete_rows(1, amount=1)    
attachment = str(output_file)
attachpath = "***"
attachfull = attachpath+attachment
attachf = str(attachfull)
wb.save(attachf)

import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
attachment = str(output_file)
attachpath = "***"
attachfull = attachpath+attachment
attachf = str(attachfull)
print(attachf)
mail.Attachments.Add(Source=attachf)
mail.Display(True)
1 个回复

您可以执行类似的操作,并将其添加到代码末尾。 如果您运行python并输入d,g,h等并输入选择值,则将打印

def menu():
    choice = input("""What variable do you want to see?
(Choose between: d, g, h, j, q, x and y)

Enter your choice:""")
    if choice == "d":
        print(d)
    elif choice == "g":
        print(g)
    #Etc...

menu()

在此链接上获得了一些启发,也许对您有所帮助http://www.teachingcomputing.com/learn.p..._函数

1 从字符串中选择Max及其唯一性

如何生成唯一的表格编号 我表中的form_no列具有此记录 我刚刚将这个SELECT MAX(form_no)测试为Latestapp FROM app_numbers 但是它获取YU13-24-0025而不是26,因为我要获取其substr(最后4位数字),然后+1,如何获 ...

2013-11-18 08:52:30 2 44   php/ mysql
4 mysql中字符串唯一性的类似功能

我的问题是,有什么方法可以在mySQL中执行此功能: $str = implode(',',array_unique(explode(',', $str))); 。 由于我正在循环执行表更新,因此我需要检查字符串是否已存在于列中。 就像是 因此,如果输入的条目应添加到B行,例如7、 ...

2013-05-28 01:58:43 2 51   php/ mysql
5 关于python中字符串实例唯一性的问题

我试图找出哪些整数python只实例化一次(看起来是-6到256),并且在这个过程中偶然发现了一些字符串行为,我无法看到模式。有时,以不同方式创建的相等字符串共享相同的字符串id,有时不是。 这段代码: 打印: 我甚至没有看到模式 - 除了前四个没有显式函数调用的事实 - 但肯 ...

6 如何确保EF中整数和字符串的唯一性?

我有一个名为Foobar的实体,我想添加一个约束来确保ColA(int)和ColB(string)不会有2个重复的元组,因此,如果按如下方式添加数据,则添加时会出现DB错误第三行 为此,我尝试添加索引IX_ColAColB 。 但是我收到一条错误消息 表'dbo.Foobar ...

7 在命令行中每行创建一个具有唯一性字符串的文件

我正在尝试创建一个文件(使用AWK,但不介意切换(如果使用另一个命令更简单)),该文件在每行中都有一个唯一的字符串(共183745行)。 我试图这样一个文件: 由于对AWK的了解不足,并且找不到相似的示例,因此我尝试失败(此示例有10行): 这不会导致错误或输出。 谢谢。 ...

8 excel公式:根据另一列的值在一个列中查找唯一性

我可以手动执行此操作,但是我敢肯定有一种公式化的方法可以执行此操作。 这是数据: 我想要做的是两个步骤: a。)选择A列中的所有值,其中B列中的对应值为“ Y”。 b。)从上面的列A中选择的数据中,仅选择唯一值并将其放在列C中。c)因此,以上数据在列C中的数据将为“ C”和“ ...

9 检查java中excel列的唯一性

我正在使用Apache POI API从Web应用程序中的上传的excel(.xls或.xlsx)文件中提取数据。 现在,我要验证工作表的特定列应包含唯一数据(无重复条目)。 是否可以在开始实际提取数据之前检查唯一性(目的只是减少计算)? 我可以在提取后执行此操作,因为我将该列放在集合 ...

10 如何断言大量字符串的唯一性?

假设我有一个算法,该算法将一个unsigned 64-bit integer作为输入,并产生一个结果string 。 字符串的字母限于[az, AZ, 0-9] ,最大长度为16。 或47,672,401,706,823,533,450,263,330,816可能的结果。 我想断言算 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM