想用pandas根据不同关键字筛选出数据并分别导出到不同sheet,因为涉及的关键字很多,我的办法是每一个关键字定义一个变量一个个操作,有没有更高效的方法?

问题遇到的现象和发生背景 :

想用pandas根据不同关键字筛选出数据并分别导出到不同sheet,因为涉及的关键字很多,我的办法是每一个关键字定义一个变量一个个操作,有没有更高效的方法?

 df = data[data[col_name].str.contains(a1)]
df.to_excel(write,sheet_name=a1,index=False )
df = data[data[col_name].str.contains(a2)]
df.to_excel(write,sheet_name=a2,index=False )
df = data[data[col_name].str.contains(a3)]
df.to_excel(write,sheet_name=a3,index=False )
df = data[data[col_name].str.contains(a4)]
df.to_excel(write,sheet_name=a4,index=False )
df = data[data[col_name].str.contains(a5)]
df.to_excel(write,sheet_name=a4,index=False )

write.save()

你是要筛选出一个表格还是多个表格啊,看你的格式只是包含字符串不同,完全可以写成一个,来个循环就行

str_list=['a1','a2','a3','a4','a5']
for i in str_list:
    df = data[data[col_name].str.contains(i)]
    df.to_excel(write,sheet_name=i,index=False )

示例代码如下:

首先假定你有一个DataFrame,其中包含一些按关键字分组的字段:

import pandas as pd

data = {'groups': ['GroupA','GroupA','GroupA','GroupB','GroupB','GroupC'],
        'name':['John','Bob','Sue','Sandy','Bob','John'],
        'height':[176,164,184,175,165,176]}

df = pd.DataFrame(data)

# 使用groupby函数按'groups'字段筛选df中的数据

grouped = df.groupby(['groups'])

# 使用ExcelWriter函数按关键字分别导出数据

with pd.ExcelWriter('groups_output.xlsx') as writer:
    for group_name, data in grouped:
        data.to_excel(writer, sheet_name=group_name)
        writer.save()