python - pandas 用列表过滤列表
问题描述
如何获取所有“id”,其中“组合”列表中的元素与“搜索”列表中的任何元素匹配?
# setup df
d = {'id': {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5},
'combo': {0: ['a', 'b'], 1: ['a'], 2: ['c', 'd'], 3: ['c', 'e'], 4: ['d'], 5: ['c', 'f']}}
df = pd.DataFrame(d)
search = ['a','d']
以下工作,但我可以只得到一个 id 的列表作为 1 班轮 - 而不是写入数据帧
df['check'] = df.apply(lambda x: any(i in search for i in x['combo']), axis=1)
df['id'][(df['check'] == True)]
解决方案
尝试:
df.loc[df['combo'].explode().isin(search).any(level=0),'id']
输出:
0 0
1 1
2 2
4 4
Name: id, dtype: int64
推荐阅读
- oracle - 从 ORACLE 12c OFM 上的 Oracle 报表服务器生成的电子邮件中的垃圾字符
- javascript - 如何创建对象数组或使用模型,就像我们在 JSON 中一样 - Angular/Ionic
- ios - GMSMapView - 为什么我的折线被画在街道下面?
- spring - 有没有办法在整个spring应用程序中配置LocalDate格式进行序列化和反序列化?
- python - “NoneType”对象不可调用
- javascript - 在 NodeJS 中为 API 导出对象
- android - Android Studio Build Fail(没有那个依赖);错误:程序类型已存在:common.utility.EEG
- google-kubernetes-engine - Cloud Composer 创建了许多 Kubernetes 工作负载,它们应该被删除吗?
- java - 无法解析构造函数 'ArrayList(java.util.List
)` 在 Java 中 - jsf - 使用 commandButton click in loop 多次触发 ajax 调用