【发布时间】:2021-04-10 03:13:06
【问题描述】:
我有 2 个列表:
my_values = ['0,78', '0,40', '0,67']
my_list = [
['Morocco', 'Meat', '190,00', '0,15'],
['Morocco', 'Meat', '189,90', '0,32'],
['Morocco', 'Meat', '189,38', '0,44'],
['Morocco', 'Meat', '188,94', '0,60'],
['Morocco', 'Meat', '188,49', '0,78'],
['Morocco', 'Meat', '187,99', '0,101'],
['Spain', 'Meat', '190,76', '0,10'],
['Spain', 'Meat', '190,16', '0,20'],
['Spain', 'Meat', '189,56', '0,35'],
['Spain', 'Meat', '189,01', '0,40'],
['Spain', 'Meat', '188,13', '0,75'],
['Spain', 'Meat', '187,95', '0,78'],
['Italy', 'Meat', '190,20', '0,11'],
['Italy', 'Meat', '190,10', '0,31'],
['Italy', 'Meat', '189,32', '0,45'],
['Italy', 'Meat', '188,61', '0,67'],
['Italy', 'Meat', '188,01', '0,72'],
['Italy', 'Meat', '187,36', '0,80'],
]
我有一个正在检查以下内容的代码:
- 对于摩洛哥,它检查
index[2]inmy_listisindex[3]inmy_values == 0,78 - 对于西班牙,它检查
index[2]inmy_listisindex[3]inmy_values == 0,40 - 对于意大利,它检查
index[2]in my_listisindex[3]inmy_values == 0,67
现在我有一个问题,您可以看到my_values 中的0,78 存在于摩洛哥和西班牙,我只想让它检查摩洛哥。
这是我的代码:
yet_another_list = [i[2] for i in my_list if i[3] in my_values]
print(yet_another_list)
这是我的输出:
['188,49', '189,01', '187,95', '188,61']
这是我喜欢的输出:
['188,49', '189,01', '188,61']
如您所见,我希望my_values 中的index[1] 仅用于Morocco,index[2] 用于Spain 等...请注意,在我的官方数据集中my_lists 包含很多更多国家...
#添加。我什至尝试过 Pandas,但仍然收到相同的输出。
df=pd.DataFrame(my_list)
df['Filter']=np.where([i in my_values for i in df[3]],"Yes","")
my_out_list=list(df[2][df['Filter']=='Yes'])
print(my_out_list)
>>
['188,49', '189,01', '187,95', '188,61']
【问题讨论】:
-
您误用了一个值作为不是唯一标识符的唯一标识符。
-
当有人留下评论而不是答案时,通常意味着他们没有完整的解决方案。不妨查看help center 以更好地了解该网站的运作方式。
-
切换到 Pandas 但复制相同的错误显然不能解决问题,尽管它可能会很好地扩展。