我是python的新手,我试图从第一列中找到所有我正在搜索的条目,这些条目在第二列中。例如:我要输入{155,137},我希望从id1列中得到5和6作为回报。
id1 id2
----------
1. 10
2. 10
3. 10
4. 9
5. 137
5. 150
5. 155
6. 10
6. 137
6. 155
....
我在Google上搜索了很多,但无法解决。我是从excel读取这些条目的,我尝试了多个for循环,但是看起来不太好,因为我正在搜索很多条目
我尝试过:
df = pd.read_excel('path/temp.xlsx') #now I have two Columns and many rows
d1 = df.values.T[0].tolist()
d2 = df.values.T[1].tolist()
d1[d2.index(115) & d2.index(187)& d2.index(276) & d2.index(239) & d2.index(200) & d2.index(24) & d2.index(83)]
返回1
我本周开始工作,所以我很新
答案 0 :(得分:0)
假设您有两个ID的两个列表(即,一个ID1列表,一个ID2列表),并且这些列表彼此对应(也就是说,列表1中索引i
的值对应于list2的索引i
处的值。
如果是这种情况,那么您只需要找出要搜索的元素的索引,其他列表中的相应索引将成为您查询的答案。
要获取元素的索引,可以使用Python的内置功能获取索引,即:
list.index(<element>)
它将返回列表中所需元素的从零开始的索引。
要从id1中获取相应的ID,您可以简单地使用此索引(因为一一对应)。就您而言,它可以写为:
id1[id2.index(137)] #it will return 5
注意:
index()
方法将从列表中返回第一个匹配条目的索引。
答案 1 :(得分:0)
最好用熊猫
import pandas as pd
import numpy as np
随机数据
n = 10
I = [i for i in range(1,7)]
df1 = pd.DataFrame({'Id1': [Id[np.random.randint(len(I))] for i in range(n)],
'Id2': np.random.randint(0,1000,n)})
df1.head(5)
Id1 Id2
0 4 170
1 6 170
2 6 479
3 4 413
4 6 52
使用
查询df1.loc[~df1.Id2.isin([170,479])].Id1
Out[344]:
3 4
4 6
5 6
6 3
7 1
8 5
9 6
Name: Id1, dtype: int64
答案 2 :(得分:0)