将嵌套列表与datafram匹配

2024-09-09 03:59:38 发布

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

我有一个嵌套列表,如下所示

[['a'], ['b'], [], ['d', 'a'], ['c', 'd', 'a']]

我还有一个数据框,它用一个值映射字母,即

  col1  value
0    a      2
1    b      5
2    c      4
3    d      9

我的目标是将列表中的字母与数据框匹配,并返回相应的值。如果有超过1个字母,我需要它们的值的总和。我的预期结果是一个简单的列表,如下所示

[2, 5, 0, 11, 15]

我试着做了一个for循环,但没能成功。你知道吗

for i in l1:
    if len(i) == 0:
        print(0)
    elif len(i) > 1:
        for j in i:
            print(d1[d1['col1'] == j]['value'])
    else:
        print(d1[d1['col1'] == i]['value'])

此外,由于数据集非常庞大,效率也是关键

数据

l1 = [['a'], ['b'], [], ['d', 'a'], ['c', 'd', 'a']]
d1 = pd.DataFrame({'col1':['a', 'b', 'c', 'd'], 'value':[2, 5, 4, 9]})

会话详细信息

print(sys.version)
3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)]

Tags: 数据inl1目标列表forlenif