如何删除pandas DataFrame列存储列表中以c.开头的元素
pandas 列表列过滤实现方案
核心思路
对存储列表的目标列调用apply()方法,将单列表的过滤逻辑批量应用到每一行的列表元素上。
完整实现代码
import pandas as pd # 示例构造DataFrame,替换成你自己的df和目标列名即可 data = { "mutations": [ ["c.7C>G", "(p.Pro3Ala)", "c.19G>T", "(p.Gly7Cys)"], ["c.49C>T", "(p.Gln17Ter)", "c.79A>T", "(p.Thr27Ser)"], ["c.37A>C", "(p.Thr13Pro)", "c.70A>T", "(p.Ile24Phe)"], ["c.17C>A", "(p.Ala6Asp)", "c.19G>T", "(p.Gly7Cys)"], ["c.19G>A", "(p.Gly7Ser)", "c.27A>T", "(p.Glu9Asp)"] ] } df = pd.DataFrame(data) # 方法1:使用apply批量过滤 # 替换mutations为你的实际列名,可选择覆盖原列或者存入新列 df['filtered_mutations'] = df['mutations'].apply( lambda lst: [item for item in lst if not item.strip().startswith('c.')] ) # 方法2:数据量较大时可以用原生列表推导式,性能略高于apply # df['filtered_mutations'] = [ # [item for item in lst if not item.strip().startswith('c.')] # for lst in df['mutations'] # ]
效果说明
过滤前列表元素:["c.7C>G", "(p.Pro3Ala)", "c.19G>T", "(p.Gly7Cys)"]
过滤后列表元素:["(p.Pro3Ala)", "(p.Gly7Cys)"]
如果你的列表元素不存在首尾空格,可以去掉strip()方法,进一步提升执行效率
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

