在 Python 中,使用 Pandas 的 DataFrame
丢弃符合特定条件的行,条件为所有包含某个关键字的列中,等于某个值(即所有包含某个关键字的列中等于某个值的行),可用以下方法实现:
import pandas as pd# example
data = {'product_A': ['apple', 'banana', 'orange', 'apple'],'product_B': ['pear', 'apple', 'apple', 'grape'],'other_col': [1, 2, 3, 4]
}
df = pd.DataFrame(data)# 丢弃所有列名包含 "product" 且值等于 "apple" 的行
keyword = 'product' # 列名包含的关键字
value2drop = 'apple' # 要丢弃的值# 步骤:
# 1. 筛选出列名包含 keyword 的列
cols = df.filter(like=keyword).columns# 2. 检查这些列是否全部等于 value2drop
mask = (df[cols] == value2drop).all(axis=1)# 3. 丢弃满足条件的行
df_filtered = df[~mask] # 取反操作保留不满足条件的行print("原始数据:\n", df)
print("\n过滤后数据:\n", df_filtered)
也可以使用 str.contains
筛选列名 + loc
条件过滤:
# 筛选列名包含 keyword 的列
cols = [col for col in df.columns if keyword in col]# 丢弃所有选定列等于 value_to_drop 的行
df_filtered = df[~df[cols].eq(value_to_drop).all(axis=1)]
直接使用 drop()
删除行也可以:
# 获取要删除的行索引
drop_index = df[df[cols].eq(value_to_drop).all(axis=1)].index# 按索引删除行
df_filtered = df.drop(drop_index)
如果有用麻烦点个赞