猿问

将嵌套列表与数据框匹配

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


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


凤凰求蛊
浏览 120回答 1
1回答

12345678_0001

IIUC for 循环 isin[d1.loc[d1.col1.isin(x),'value'].sum()for x in l1] Out[883]: [2, 5, 0, 11, 15]
随时随地看视频慕课网APP

相关分类

Python
我要回答