【发布时间】:2017-09-11 18:32:51
【问题描述】:
我有一个熊猫数据框df1,它有一个索引和一列列表,看起来像:
index IDList
0 [1,3,5,7]
1 [2,4,5,8]
2 [6,8,9]
3 [1,2]
我有另一个 Pandas 数据框 df2,它以 NewID 作为索引,以及一列如下所示的列表:
NewID IDList
1 [3]
2 [4,5]
3 [1,7]
4 [2]
5 [9,3]
6 [8]
7 [6]
我需要做的是,如果df1.IDList 中的任何项目存在于df2.IDList 中,则返回相关df2.NewID 的列表。
所以返回的d1 数据框看起来像:
index IDList NewID
0 [1,3,5,7] [3,1,2,3,5]
1 [2,4,5,8] [4,2,2,6]
2 [6,8,9] [7,6,5]
3 [1,2] [3,4]
编辑:请注意,在df2 中,IDList 中的 ID 可以出现在多行中(参见 @987654331 中的 ID 3 @ 并且 ID 3 出现在 df2 第 1 行和第 5 行)
我在想某种包含“any”和列表理解的np.where 语句?但不确定如何在df1 中申请每个IDList,它查看整个df2.IDList。也许某种.stack()?或.melt()?这在具有 df2 的 vlookup 的电子表格中很容易......
帮助感谢...
【问题讨论】:
标签: python pandas numpy list-comprehension melt