为了账号安全,请及时绑定邮箱和手机立即绑定

将嵌套列表与数据框匹配

将嵌套列表与数据框匹配

凤凰求蛊 2021-11-30 16:41:40
我有一个嵌套列表,如下所示,[['a'], ['b'], [], ['d', 'a'], ['c', 'd', 'a']]我还有一个数据框,它用一个值映射字母,即  col1  value0    a      21    b      52    c      43    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)]
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

IIUC for 循环 isin

[d1.loc[d1.col1.isin(x),'value'].sum()for x in l1]
Out[883]: [2, 5, 0, 11, 15]


查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信