我有两份清单:
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]
in my_list
是什么index[3]
在 my_values == 0,67
现在我有一个问题,正如你所看到的,{
这是我的代码:
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_lists
包含了更多的国家
#添加。我甚至尝试了熊猫,但仍然收到了相同的输出。
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']
使用带有迭代器的原始数据结构
用法
如果我正确理解您的要求,您希望循环列表中的国家,同时循环其他列表中的索引
如果您的国家/地区多于
my_values
中的值,这显然会抛出一个IndexError
也许更好的方法是将
my_list
转换为dict,其中键是国家名称,值是该国家的值我建议使用字典,然后过滤数据集
作为补充说明,如果您使用的是更大的数据集,那么查看pandas包可能会有所帮助,这是一个用于数据分析的流行Python库
相关问题 更多 >
编程相关推荐