python - 在同一数据框中递归使用 set 函数
问题描述
我有一个如下所示的数据框:
id events
1 [a]
1 [a,b,c,d]
2 [d,e]
2 [d,e,f]
我想消除后续行中的常见项目..导致:
id events
1 [a]
1 [b,c,d]
2 [d,e]
2 [f]
我知道 set 函数在列级别执行此操作,但是否可以使用 apply 或 lambda 函数在行上递归执行此操作?
解决方案
一个想法是使用DataFrame.explode
,删除两列的重复项,DataFrame.drop_duplicates
然后聚合回来:
df = (df.explode('events')
.drop_duplicates(['id','events'])
.groupby(level=0)
.agg({'id':'first', 'events':list}))
print (df)
id events
0 1 [a]
1 1 [b, c, d]
2 2 [d, e]
3 2 [f]
推荐阅读
- django - 在django中划分属于两个查询集的项目
- mongodb - 在 Mongoose 中返回最近添加的子文档
- python - 堆排列列表
- laravel - Laravel 组件数据传递
- python - 使用 keras 加载模型时如何解决错误
- ios - 在 Swift 中声明 CLLocationCoordinate2DMake 数据类型变量
- angular - 屏幕阅读器可以以角度形式访问的表单错误
- python - 无法使用 Keras 模型类构建模型
- android - Android Studio 构建失败 - 任务:app:dexBuilderDebug FAILED
- r - 在 for 循环中为蜂群图中的分位数分配颜色