2024-09-29 23:27:51 发布
网友
我试图基于数据帧中的映射表来映射列表中的元素。我的清单如下:
List1 = [('a','b'), ('a','c'), ('a','d'), ('b','c'), ('b','d')]
像这样映射表
mapping = {'name': ['a', 'b', 'c', 'd'],'ID': [1,2,3,2]} df = pd.DataFrame(mapping)
我想要达到的目标
Mappedlist = [(1,2), (1,3), (1,2), (2,3), (2,2)]
尝试此嵌套列表:
print([[df.loc[df['name'] == x, 'ID'].item() for x in i] for i in List1])
输出:
[[1, 2], [1, 3], [1, 2], [2, 3], [2, 2]]
修改:
print([[df.loc[df['ID'] == x, 'name'].item() for x in i] for i in List1])
[['a','b'], ['a','c'], ['a','d'], ['b','c'], ['b','d']]
最好在Mappedlist中迭代一次,而不是嵌套循环:
Mappedlist
[(df['ID'].loc[df.name == x].item(), df['ID'].loc[df.name == y].item()) for (x, y) in List1] # Result: [(1, 2), (1, 3), (1, 2), (2, 3), (2, 2)]
您可以在列表中调用变量而不是字符串,但请确保变量应该在列表1之前
a = 1 b = 2 c = 3 d = 2 List1 = [(a,b), (a,c), (a,d), (b,c), (b,d)] print(List1)
输出
[(1, 2), (1, 3), (1, 2), (2, 3), (2, 2)]
尝试此嵌套列表:
输出:
修改:
输出:
最好在
Mappedlist
中迭代一次,而不是嵌套循环:您可以在列表中调用变量而不是字符串,但请确保变量应该在列表1之前
输出
相关问题 更多 >
编程相关推荐