繁体   English   中英

在 vs 代码中执行时使用可迭代设置时必须具有相等的 len 键和值

[英]Must have equal len keys and value when setting with an iterable when executing in vs code

我有两个如下所示的数据框。 现在,我想比较两个 df 的两列,并且在匹配值时,它必须与 append 另一列的值与另一个具有新列的 df 进行比较,但是当尝试执行如下所示的 for 循环时会引发以下错误。 相同的代码在 jupyter notebook 中运行良好,但在 vs code 中执行时会抛出错误。 我不明白这个问题,实现它的最佳方法是什么?

df1
    id            ids_list
0   1           [126, 238]
1   2           [126, 355]
2   3       [1265, 152, 238]
3   4       [1265, 1529,2384,17235]
df2
  from_id   to_id
0   1         2 
1   3         1
2   2         1
3   4         2
4   2         3
 
for y,z in zip(df1['id'],df1['ids_list']):
        df2.loc[df2.from_id == y, 'from_ids'] = z
        df2.loc[df2.to_id == y, 'to_ids'] = z

在 jupyter notebook 中执行时,会导致例外的 output:

  from_id   to_id   from_ids                     to_ids
0   1         2     [126, 238]                  [126, 355]
1   3         1     [1265, 152, 238]            [126, 238]
2   2         1     [126, 355]                  [126, 238]
3   4         2     [1265, 1529,2384,17235]     [126, 355]
4   2         3     [126, 355]                  [1265, 152, 238]

但是在 vs 代码中运行相同的代码时出现以下错误:

Must have equal len keys and value when setting with an iterable

如果不匹配,则使用DataFrame.applymapdict.get映射可能的空列表:

d = dict(zip(df1['id'],df1['ids_list']))

f = lambda x: d.get(x, [])
df2[['from_ids','to_ids']] = df2[['from_id','to_id']].applymap(f)
print (df2)
   from_id  to_id                   from_ids            to_ids
0        1      2                 [126, 238]        [126, 355]
1        3      1           [1265, 152, 238]        [126, 238]
2        2      1                 [126, 355]        [126, 238]
3        4      2  [1265, 1529, 2384, 17235]        [126, 355]
4        2      3                 [126, 355]  [1265, 152, 238]

如果没有匹配是可能的缺失值使用:

df2[['from_ids','to_ids']] = df2[['from_id','to_id']].apply(lambda x: x.map(d))
print (df2)
   from_id  to_id                   from_ids            to_ids
0        1      2                 [126, 238]        [126, 355]
1        3      1           [1265, 152, 238]        [126, 238]
2        2      1                 [126, 355]        [126, 238]
3        4      2  [1265, 1529, 2384, 17235]        [126, 355]
4        2      3                 [126, 355]  [1265, 152, 238]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM