You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除DataFrame中符合‘col3为Missing且值存在于另一列’的行?

解决DataFrame删除特定条件行的问题

没问题,我来帮你搞定这个需求!先搭个符合你描述的示例DataFrame,再一步步实现删除逻辑。

首先,构造一个和你需求匹配的样例数据:

import pandas as pd

# 构造示例DataFrame,第1行(索引1)符合删除条件
data = {
    'A': ['X', 'A', 'Y'],
    'B': ['A,B,C', 'D,E,F', 'G,H'],
    'col3': ['Valid', 'Missing', 'Missing']
}
df = pd.DataFrame(data)

接下来是核心的删除逻辑:我们需要标记出col3值为"Missing"且A列的值存在于该行B列中的行,然后删掉它们。这里用apply逐行判断,再结合布尔掩码筛选:

# 生成需要删除的行的掩码
# 逻辑:col3是"Missing" 并且 当前行的A值在B列拆分后的列表里
mask = (df['col3'] == 'Missing') & df.apply(lambda row: row['A'] in row['B'].split(','), axis=1)

# 保留不符合删除条件的行(对掩码取反)
df = df[~mask]

如果你想直接修改原DataFrame而不是生成新对象,也可以用drop方法:

df.drop(df[mask].index, inplace=True)

额外注意点

如果你的B列内容带有空格(比如"A, B, C"),记得在拆分后去掉空格,避免判断失误:

mask = (df['col3'] == 'Missing') & df.apply(
    lambda row: row['A'] in [x.strip() for x in row['B'].split(',')], 
    axis=1
)

运行完代码后,原DataFrame里符合条件的第1行就会被成功删除啦!

内容的提问来源于stack exchange,提问作者Kiran J. Mistry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:44:23