【发布时间】:2021-02-09 06:36:23
【问题描述】:
我有一个列表,如下所示:
l1 = [[[1,0]],[[1,2],[6,9]],[[0,4]],[[0,4]], [[0,4]], [0]]
我有一个辅助数据框 df,将某些数字映射到列表:
D1 = [0,1,2,3]
D2 = [[100,0],[1,300,2],[2],[1,1,1]]
df= pd.DataFrame({'ref': D1,
'val': D2})
我想检查列表l1 中的元素与数据框df 中'ref' 列中的值,如果相等,则将元素替换为df 的D2 列中的相应值,如所需结果:
l3 = [ [[1,300,2],[100,0]],[[[1,300,2],[2]],[6,9]],[[100,0],4],[[100,0]],4], [[100,0],4], [100,0]]
我尝试了以下方法,但在执行一个循环后出现错误:
for i in range(1, len(l1)):
for ii in range(0,len(l1[i])):
for iii in range (0,len(l1[i][ii])):
for j in range(0,len(df)):
if l1[i][ii][iii] == df.ref[j]:
l1.linktest[i][ii][iii] = df.val[j]
并面对错误:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
【问题讨论】:
标签: python list for-loop nested mapping