关于以下数据帧
idx = pd.MultiIndex.from_product([['A001', 'B001','C001'],
['0', '1', '2']],
names=['ID', 'Entries'])
col = ['A', 'B']
df = pd.DataFrame('-', idx, col)
df.loc['A001', 'A'] = [10,10,10]
df.loc['A001', 'B'] = [90,84,70]
df.loc['B001', 'A'] = [10,20,30]
df.loc['B001', 'B'] = [70,86,67]
df.loc['C001', 'A'] = [20,20,20]
df.loc['C001', 'B'] = [98,81,72]
df.loc['D001', 'A'] = [20,20,10]
df.loc['D001', 'B'] = [68,71,92]
#df is a dataframe
df
我想知道的ID,其中包括所有的值从一个集合或列表在他们的'a'列。让我们定义一个值为[10,20]的列表。在这种情况下,我应该得到位置“B001”和“D001”作为答案,因为这两个位置的值都在其“A”列中的列表中提到。 此外,你能建议一个更快的实施,因为我必须在真正的大数据集工作。你知道吗
可以使用
set.intersection
进行计算,使用pd.Index.get_level_values
提取索引的第一级:基本上-
感谢@Ben.T删除了不必要的
unique()
输出
解释
df.groupby(level=0)['A']
按level 0
分组并给出列表-接下来,对于每个列表,我们将其转换为一个集合,并检查
search_list
是否是一个子集。你知道吗它返回一个
Series
布尔值,然后可以用作掩码-最终输出-
相关问题 更多 >
编程相关推荐