filterdataframe= dataframe.select_dtypes(include='object')
findVal = np.column_stack(filterdataframe[col].str.contains('查询的字符串', na=False) for col in filterdataframe)
findSerise = filterdataframe.loc[findVal.any(axis=1)]
2.保存或追加数据这里简单说一下逻辑
dataframe.select_dtypes(include=‘object’)先找出是字符串文本的Serise,float数字类型是没有contains方法的;, dataframe[col].str.contains(‘查询的字符串’, na=False) for col in dataframe 这段代码 循环查找表中Serise(列)是否包含指定字符串,这个返回结果就是((True,False,False),(True,False,False)),再通过np.column_stack合并[[True, True], [False,False],[False,False]],显示True就代表是相同字符串,再通过loc定位到指定(行)
combineDataframe
with pd.ExcelWriter(savePath+'xxxx.xlsx') as writer:
combineDataframe.to_excel(writer, sheet_name="1sheet",index=False)
combineDataframe.to_excel(writer, sheet_name="2sheet",index=False)
# 追加相同sheet数据
with pd.ExcelWriter(savePath, mode='a', engine="openpyxl", if_sheet_exists="overlay") as writer
oldSheetDataframe_1 = pd.read_excel(writer, sheet_name='sheet1')
oldSheetDataframe_2 = pd.read_excel(writer, sheet_name='sheet2')
combineWhBillDataframe.to_excel(writer, startrow=oldSheetDataframe_1.shape[0] + 1, header=False, sheet_name='sheet1', index=False)
combineRelDataframe.to_excel(writer, startrow=oldSheetDataframe_2.shape[0] + 1, header=False, sheet_name='sheet2', index=False)
# if_sheet_exists: overlay 不删除sheet表内容,写入,如果不规定startrow开始写入行数就会覆盖之前的数据
# replace 删除sheet,重新创建sheet替换
index=false,导出的excel就不会把索引index也一同导入进去,在操作数据index可以不用去掉,这样也方便我们去观察数据。
注意:pandas1.2.0之前 pd.ExcelWriter中engine不能混用,xlsxwriter(默认)、openpyxl二选一
pandas1.4之后 会根据文件后缀选用不同的engine, xlsx -> openpyxl , xls -> xlswriter
。。。。后续持续更新



