Python 在列表列表中搜索

Python 在列表列表中搜索,python,pandas,Python,Pandas,我有一个列,每行有一个ID列表。我需要能够搜索ID并输出包含ID的行。我在下面包含了示例数据 我需要能够在搜索中输入一个或多个ID。我已经尝试了下面的代码,但是我得到了这个问题末尾包含的错误 buyers[buyers['customer_list'].str.contains('48184' )] buyers[buyers['customer_list'].str.contains('48184', '55684')] 数据 df = pd.DataFrame({'A':[[48184,

我有一个列,每行有一个ID列表。我需要能够搜索ID并输出包含ID的行。我在下面包含了示例数据

我需要能够在搜索中输入一个或多个ID。我已经尝试了下面的代码,但是我得到了这个问题末尾包含的错误

buyers[buyers['customer_list'].str.contains('48184' )]
buyers[buyers['customer_list'].str.contains('48184', '55684')]
数据

df = pd.DataFrame({'A':[[48184, 48184, 64970, 64970], [55684, 72990, 72990, 85673], [55684, 72990, 72990, 85673], [64247, 60131, 60131, 60131], [64544, 64544, 64544, 64544]]})
错误

KeyError                                  Traceback (most recent call last)
<ipython-input-42-3229146c6a64> in <module>()
----> 1 buyers[buyers['customer_list2'].str.contains( '48184' )]

/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py in __getitem__(self, key)
   2680         if isinstance(key, (Series, np.ndarray, Index, list)):
   2681             # either boolean or fancy integer index
-> 2682             return self._getitem_array(key)
   2683         elif isinstance(key, DataFrame):
   2684             return self._getitem_frame(key)

/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py in _getitem_array(self, key)
   2724             return self._take(indexer, axis=0)
   2725         else:
-> 2726             indexer = self.loc._convert_to_indexer(key, axis=1)
   2727             return self._take(indexer, axis=1)
   2728 

/opt/conda/lib/python3.6/site-packages/pandas/core/indexing.py in _convert_to_indexer(self, obj, axis, is_setter)
   1325                 if mask.any():
   1326                     raise KeyError('{mask} not in index'
-> 1327                                    .format(mask=objarr[mask]))
   1328 
   1329                 return com._values_from_object(indexer)

KeyError: '[nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan\n nan nan nan nan nan nan] not in index'
keyrerror回溯(最近一次调用)
在()
---->1买家[买家['customer_list2'].str.contains('48184')]
/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py in\uuuuuu getitem\uuuuuu(self,key)
2680如果isinstance(键,(系列,np.ndarray,索引,列表)):
2681#布尔或奇异整数索引
->2682返回self.\u getitem\u数组(键)
2683 elif isinstance(键,数据帧):
2684返回自我。\u获取项目\u帧(键)
/数组中的opt/conda/lib/python3.6/site-packages/pandas/core/frame.py(self,key)
2724返回自取(索引器,轴=0)
2725其他:
->2726索引器=self.loc.\u转换为索引器(键,轴=1)
2727返回自取(索引器,轴=1)
2728
/opt/conda/lib/python3.6/site-packages/pandas/core/index.py in\u convert\u to\u indexer(self、obj、axis、is\u setter)
1325如果掩码为。任何()
1326 raise KeyError(“{mask}不在索引中”
->1327.格式(mask=objarr[mask]))
1328
1329从对象(索引器)返回com.\U值
KeyError:'[南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南\n南南南南南南南南南南南南南南南南南南南\n南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南\n南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南楠楠\n楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠n南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南安楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠\n南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南\n南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南安楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠楠

您可以将应用与lambda函数一起使用:

searchValue = input('ID Search: ')
mask = df['A'].apply(lambda x: int(searchValue) in x)
print(df[mask])

ID Search:  72990
                              A
1  [55684, 72990, 72990, 85673]
2  [55684, 72990, 72990, 85673]
如果要从输入中搜索多个值:

searchValue = input('ID Search: ') # input numbers
nums = [int(n) for n in searchValue.split(',')] # list comprehension to int n for n in the input values separated by comma
mask = df['A'].apply(lambda x: any(elem in x for elem in nums)) #  create a mask for any elem in nums and in x which is each row
print(df[mask])

ID Search:  72990,48184
                              A
0  [48184, 48184, 64970, 64970]
1  [55684, 72990, 72990, 85673]
2  [55684, 72990, 72990, 85673]

您可以将“应用”与lambda函数一起使用:

searchValue = input('ID Search: ')
mask = df['A'].apply(lambda x: int(searchValue) in x)
print(df[mask])

ID Search:  72990
                              A
1  [55684, 72990, 72990, 85673]
2  [55684, 72990, 72990, 85673]
如果要从输入中搜索多个值:

searchValue = input('ID Search: ') # input numbers
nums = [int(n) for n in searchValue.split(',')] # list comprehension to int n for n in the input values separated by comma
mask = df['A'].apply(lambda x: any(elem in x for elem in nums)) #  create a mask for any elem in nums and in x which is each row
print(df[mask])

ID Search:  72990,48184
                              A
0  [48184, 48184, 64970, 64970]
1  [55684, 72990, 72990, 85673]
2  [55684, 72990, 72990, 85673]

使用数据帧构造函数和isin+
any

pd.DataFrame(df.A.tolist()).isin([48184,55684]).any(1)
Out[29]: 
0     True
1     True
2     True
3    False
4    False
dtype: bool

使用数据帧构造函数和isin+
any

pd.DataFrame(df.A.tolist()).isin([48184,55684]).any(1)
Out[29]: 
0     True
1     True
2     True
3    False
4    False
dtype: bool