【发布时间】:2021-09-24 19:00:23
【问题描述】:
我有 2 个具有以下结构的数据框:
DF1
ItemID Item
Id1 Item1
Id2 Item2
Id3 Item3
... ...
1000 Item1000
DF2
Index ListOfItems
0 [Item1]
1 [Item1, Item3, Item5]
2 [Item2, Item3]
... ...
N [NItems]
这将是我的预期输出:
Index ListOfItems ListOfIds
0 [Item1] [Id1]
1 [Item1, Item3, Item5] [Id1, Id3, Id5]
2 [Item2, Item3] [Id2, Id3]
... ... ...
N [NItems] [NIds]
将第二个 Dataframe 的 ListOfItmes 与第一个 Dataframe 的 Id 匹配,并在新列中创建 Id 列表
这是在不断变化的大型数据帧上完成的,因此性能很重要。我尝试了一些方法,但性能很差。
【问题讨论】:
-
您能否更改 DF2 以便您不需要在数据框中包含列表?如果您改为使用每个项目 1 行的 DF1,然后为导致项目出现在某些列表中的任何内容添加列,您的性能可能会好很多。例如,col 'source1' 将为 Item 1 获得 1,为所有其他项获得 0,'source2' 将为 Item1、Item3、Item5 获得 1。然后将 df 过滤为 source1 == 1 以生成 source1 的项目列表。
-
不幸的是,我不能这样做,因为 dF2 来自具有我在示例中提供的信息的特定数据库。
标签: python pandas dataframe loops list-comprehension