方法一实现起来最简单,但是并不优雅,最优雅的是方法三,用了一行代码实现了。
import pandas as pd data = pd.read_excel("c:/result/xxx.xlsx") # print(data.head()) # 只保留行的数据当中含有特定字符的行 target_str = "yyy" # 方法1-笨方法,遍历每一行,每一列,虽然实现了这个要求,但是很不优雅 result_list = [] for index, row in data.iterrows(): r = False for i in row: if target_str in str(i): r = True if r: result_list.append(row) df1 = pd.DataFrame(result_list) print(df1) # 方法2- 使用apply函数 df2 = pd.read_excel("c:/result/xxx.xlsx") df2["c"] = df2.apply(lambda x: x.str.contains(target_str).any(), axis=1) df2 = df2[df2['c']==True].drop(columns="c") print(df2) # 方法3 df3 = pd.read_excel("c:/result/xxx.xlsx") df3 = df3[df3.apply(lambda x: x.str.contains(target_str).any(), axis=1)] print(df3) assert list(df1.index) == list(df2.index) == list(df3.index) print("测试成功")