python从列中搜索表/.csv,返回结果行

python从列中搜索表/.csv,返回结果行,python,csv,search,Python,Csv,Search,我在.csv文件中有下表: 1,123 Sesame Street,Imaginary,XL,Seven Eleven #398,, 2,124 Sesame Street,Imaginary,XL,Seven Eleven #399,, 3,125 Sesame Street,Imaginary,XL,Seven Eleven #400,, 4,126 Sesame Street,Imaginary,XL,Seven Eleven #401,, 5,127 Sesame Street,

我在.csv文件中有下表:

1,123 Sesame Street,Imaginary,XL,Seven Eleven #398,,

2,124 Sesame Street,Imaginary,XL,Seven Eleven #399,,

3,125 Sesame Street,Imaginary,XL,Seven Eleven #400,,

4,126 Sesame Street,Imaginary,XL,Seven Eleven #401,,

5,127 Sesame Street,Imaginary,XL,Seven Eleven #402,,

6,128 Sesame Street,Imaginary,XL,Seven Eleven #403,,

7,129 Sesame Street,Imaginary,XL,Seven Eleven #404,,

8,130 Sesame Street,Imaginary,XL,Seven Eleven #405,,

9,131 Sesame Street,Imaginary,XL,Seven Eleven #406,,

10,132 Sesame Street,Imaginary,XL,Seven Eleven #407,,

11,133 Sesame Street,Imaginary,XL,Seven Eleven #408,,

12,134 Sesame Street,Imaginary,XL,Seven Eleven #409,,

13,135 Sesame Street,Imaginary,XL,Seven Eleven #410,,

14,136 Sesame Street,Imaginary,XL,Seven Eleven #411,,

15,137 Sesame Street,Imaginary,XL,Seven Eleven #412,,

16,138 Sesame Street,Imaginary,XL,Seven Eleven #413,,
该表分为以下几列:

DeviceNumber,DeviceStreetAddress,DeviceCity,DeviceState,DeviceStoredAt,DeviceConnect,Keys
我正试图在表(有几千个条目)中搜索相应列中的某个
DeviceNumber
DeviceStreetAddress
。搜索应返回包含搜索信息的整行,以提供有关正在搜索的设备的附加信息。最好是以列表而不是字符串的形式返回

我找到了一些我尝试过的代码,但通常会出现如下错误:

UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0xd0:无效>继续字节 或 NameError:未定义名称“列” 等等

在做了大量的头撞墙和一次又一次的开始之后,我现在有以下代码:

import pandas as pd
df = pd.read_csv('path/to/file.csv')
dev_id = df[0] #this should theoretically give me a list of the device ids
dev_address = df[1] #this should theoretically give me a list of addresses

TBH,我真的不知道我在技术上想做什么,或者更确切地说,我不知道如何去做。如果有人能帮我一点忙,我将不胜感激

您需要按名称调用每个列,并且需要确保在导入时设置了列名

一个简单的方法是将以下行放在
csv
的顶部,因为
pandas
将自动使用第一行作为列名

DeviceNumber,DeviceStreetAddress,DeviceCity,DeviceState,DeviceStoredAt,DeviceConnect,key

然后,您可以简单地调用以下命令,它们应该可以工作

dev_id = df['DeviceNumber']
dev_address = df['DeviceStreetAddress']
为了实现您似乎要查找的结果,您可以在其中搜索地址,然后查找设备ID,您可以定义一个
函数
,在该函数中传递
数据帧
,然后进行查询并返回结果

import pandas as pd

df = pd.read_csv('2017.csv')


def locate(df, query):
    result = df.loc[(df['DeviceStreetAddress'].str.lower() == query)]['DeviceNumber'].reset_index(drop=True)

    return result[0] if result.any() else 'Not Found'


print(locate(df, input('Address :')))
输出:

Address :123 sesame street
1
>>>

Address :11
Not Found
>>> 

我已将标题添加到文件中,并将我的代码编辑如下:
import pandas as pd df=pd.read_csv('C:/path/DataStuff.csv')dev_id=df['DeviceNumber']dev_address=df['DeviceStreetAddress']search_for=df.filter(输入('you looking?',dev_address,dev_id))打印(search_for)
,我得到以下错误:TypeError:input最多需要1个参数,得到3个参数同时在这两列中搜索的语法是什么?我应该使用嵌套的“for”循环吗?我不熟悉熊猫图书馆。你想实现什么?我在一个呼叫中心工作,我有各种设备的电子表格,我们有这些设备的信息。当我接电话时,我会得到一个地址或设备号,然后必须在电子表格中搜索正确的设备。一旦我有了这些数据,我还需要做其他的事情,但我已经对其他方面进行了排序。我需要能够提取特定设备上的数据行,然后在程序的另一部分中使用(特别是dev编号)作为变量。这有意义吗?据我所知,文档需要更像这样:
import pandas As pd df=pd.read_csv('C:/path/datastaff.csv')#将列分配给变量以搜索dev_id=df['DeviceNumber']dev_address=df['DeviceStreetAddress']search_for=input('你在找什么?'))#定义要在这些列之间进行的搜索display=df.loc[search_for,dev_address:dev_id]#这应该从search_for print(display)
中的搜索中获取行,但是,这只会得到错误。你明白我的意思了吗?检查我的编辑,如果你只想搜索附加到地址的结果,你可以执行那个搜索。