如何使用熊猫查找行#并基于用户输入搜索电子表格?

问题描述

我正试图找出如何基于对Excel文档的搜索来轻松索引行号。

from tkinter import *

import pandas as pd

database = pd.ExcelFile('C:/Code/CODETEST.xlsx').parse(sheet_name="Sheet1",skiprows=0,nrows=3)

excel_data_df = pd.read_excel('CODETEST.xlsx',sheet_name='Sheet1',)

##excel_data_dfRow = pd.read_excel('CODETEST.xlsx',nrows=2)

print (excel_data_df)


##print(excel_data_df.columns.ravel())

##print(excel_data_df['Service Name'].tolist())

##Creating a service list for all services listed under "Serivce name" Column
My_Service_List = (excel_data_df['Service Name'].tolist())


My_Multicast_List = (excel_data_df['SRC DRAWING'].tolist())

column2 = excel_data_df.iloc[0,3]
column3 = excel_data_df.iloc[:0,4]

print (column2)
print(My_Service_List)

##print (excel_data_dfRow)


print(My_Multicast_List)

##print (database)



##Source1_Text = tk.StringVar()

root = Tk()

##Creating Entries
Group = Entry(root,width=50)
Group.grid(row=0,column=5)
Source = Entry(root,width=50)
Source.grid(row=1,column=5)
Service = Entry(root,width=50)
Service.grid(row=2,column=5)

Test = database

##if Test == Service.get():
  ##  print ("Yes")

Source1 = Button()

def Standard_flow():
    global Source1
    global My_Service_List
    global Test
    global column2
    Standard_window = Tk()
    ##Source1_Text = tk.StringVar()
    ##Source1_Text.set("Original Text")
    ##My_Service_ListTEST = Service.get()
    Source1 = Button(Standard_window,text=column2)
    Source1.grid(row=1,column=1)
    Source2 = Button(Standard_window,text=column3)
    Source2.grid(row=1,column=2)
    Source3 = Button(Standard_window,text='DCM')
    Source3.grid(row=1,column=3)

# Definining Buttons
def Okay():
    hello = "Searching " + Group.get()
    myLabel = Label(root,text=hello)
    myLabel.grid(row=0,column=6)


def Okay2():
    hello2 = "Searching " + Source.get()
    myLabel2 = Label(root,text=hello2)
    myLabel2.grid(row=1,column=6)


def Okay3():
    hello3 = "Searching " + Service.get()
    myLabel3 = Label(root,text=hello3)
    myLabel3.grid(row=2,column=6)
    if My_Service_List.__contains__(Service.get()):
        return Standard_flow()
    else:
        None


##Creating Buttons
myButton_Group = Button(root,text='Group Multicast IP',command=Okay)
myButton_Source = Button(root,text='Source IP',command=Okay2)
myButton_Service = Button(root,text='Service Name',command=Okay3)

##displaying Buttons
myButton_Group.grid(row=0,column=1)
myButton_Source.grid(row=1,column=1)
myButton_Service.grid(row=2,column=1)

root.mainloop()

我正在使用用户输入来检查excel文档,以查看该特定列中是否存在该值,但我也想索引该服务已找到的行#的索引,以便我可以从该行打印特定列。

我需要按照以下内容执行if语句...

if My_Service_List.__contains__(Service.get()):

返回或索引包含输入的行#

我稍后需要在代码中使用此行#来打印/显示同一行其他列的用户数据。

查看了文档,但是在推动此问题上存在一些问题,请忽略代码中没有意义的所有注释,我正在尝试并在进行过程中将其注释掉。

我看到了有关dt.loc的信息,以获取索引行#

Searching = (excel_data_df.loc(Service.get()))

print (Searching)

但是问题是,尝试运行该服务时未定义“服务”。

“跟踪(最近一次通话结束): 文件“ C:/ Users / 206415779 / Python / FINDIT / FINDIT START”,第37行,在 搜索= excel_data_df.loc(Service.get()) NameError:名称“服务”未定义”

非常感谢您的帮助。

解决方法

这就是我需要的东西。希望能回答这个问题。

Searched_Multicast_Row_Location = excel_data_df_Sheet_1[excel_data_df_Sheet_1['Zixi Multicast'] == Group.get()].index

创建一个变量“ Searched_Multicast_Row_Location”以存储基于来自用户的“ Group.get()”的索引行。 “ Zixi Multicast”是用于搜索的列,我知道该列中的值,因此用户输入其搜索内容,此var将查询该列并找到值的行#。我还有另一篇文章讨论将其设置为搜索多列。如果不清楚,则“ excel_data_df_Sheet_1”是我的df。