Python检查DataFrame是否含指定字符串 将匹配行存入新列表
实现方法
首先先修正你现有代码的两个基础语法问题:
- 变量名不能带空格,
new list要改成new_list - 你定义的
lang_list里'es缺少闭合单引号,要补成'es'
顺着你原有循环逻辑补全的实现
判断匹配成功后,筛选对应行取出language和count字段的值追加即可,完整可运行代码:
import pandas as pd # 示例数据 df = pd.DataFrame({ 'language': ['en-US', 'en'], 'count': [12, 5] }) lang_list = ['en', 'es'] new_list = [] for x in lang_list: # 判断当前语言是否存在于df的language列 if x in df['language'].values: # 取出匹配行的两个字段,转成字典追加到列表 match_data = df[df['language'] == x][['language', 'count']].iloc[0].to_dict() new_list.append(match_data)
运行后new_list的输出为:
[{'language': 'en', 'count': 5}]
es因为不在df的language列中,不会被加入结果。
更高效的pandas原生写法
如果数据量比较大,不用自己写循环,用pandas内置的isin()方法直接批量筛选即可,代码更简洁运行更快:
new_list = df[df['language'].isin(lang_list)][['language', 'count']].to_dict('records')
运行结果和循环写法完全一致。
内容的提问来源于stack exchange,提问作者Alo
相关产品推荐
相关产品推荐

