lis中元素的映射

2024-09-29 23:27:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图基于数据帧中的映射表来映射列表中的元素。我的清单如下:

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)]

Tags: 数据nameid元素目标dataframedf列表
3条回答

尝试此嵌套列表:

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中迭代一次,而不是嵌套循环:

[(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)]

相关问题 更多 >

    热门问题