首页 > 解决方案 > 如何使用熊猫查找行#并搜索基于用户输入的电子表格?

问题描述

我试图找出如何根据对 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', sheet_name='Sheet1', 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 行,在 Searching = excel_data_df.loc(Service.get()) NameError: name 'Service' is not定义"

任何帮助深表感谢。

标签: pythonexcelpandas

解决方案


这就是我需要的东西。回答希望能帮助别人。

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

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


推荐阅读