在 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)
如果有用麻煩點個贊