python从列中搜索表/.csv,返回结果行
我在.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,
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)
中的搜索中获取行,但是,这只会得到错误。你明白我的意思了吗?检查我的编辑,如果你只想搜索附加到地址的结果,你可以执行那个搜索。