目录
问题描述
大概是这样的一张表格
我们需要找到符合的形容词并标上1,并且这个excel文件里有两个sheet
思路
1. 读取excel文件
2.Loop描述列,分别对比关键词
3.如果描述中包含了关键词则在相应位置写入1
4.导出excel文件
运用到的库
pandas
import pandas as pd
如果我们要写一个类的话,它需要接收的参数应该包括了:
readUrl——这是我们要读取的文件的路径
writeUrl——我们打算写入的路径
sheetName1,sheetName2——取决于这个excel有几个sheet
keyword1,keyword2,keyword3,keyword4——取决于有几个关键词需要对比
def excelHelper(readUrl,sheetName1,sheetName2,keyword1,keyword2,keyword3,keyword4,writeUrl):
接下来是导入我们需要的excel文件,每个sheet都要导入
df1 = pd.DataFrame(pd.read_excel(readUrl, sheetName1))
df2 = pd.DataFrame(pd.read_excel(readUrl,sheetName2))
然后就是循环和对比的过程
for i, r in df.iterrows():#按行循环整个表
noneOfThem = 0#每一行的以上都未描述的初始值都设为0
if keyword1 in df.iloc[i,1]:#这个df.iloc[i,1]是指向当前行的第二个位置,也就是[1]
df1.iloc[i,2] = 1#如果符合就把对应位置设为1
noneOfThem = 1 #如果符合任意一项,都不能称为以上都未描述
if keyword2 in df.iloc[i,1]:
df1.iloc[i,3] = 1
noneOfThem = 1
if keyword3 in df.iloc[i,1]:
df1.iloc[i,3] = 1
noneOfThem = 1
if keyword4 in df.iloc[i,1]:
df1.iloc[i,3] = 1
noneOfThem = 1
if noneOfThem = 0:
df1.iloc[i,4] = 1#如果经过了上面的筛选后noneOfThem还是0,说明没有一条是符合的
之后就是写入新的路径啦!
with pd.ExcelWriter(writeUrl) as writer:
df1.to_excel(writer,sheet_name=sheetName1,index=False)
df2.to_excel(writer, sheet_name=sheetName2,index=False)
最后最后叫一叫这个类
excelHelper('C:\somewhere\fileName.xls','Sheet1','Sheet2','小朋友','青年人','可爱','美丽','C:\somewhere\newFileName.xls')
用到的方法
pd.DataFrame()
pd.read_excel()
df.iterrows() ——按行循环表
df.iloc[行坐标,列坐标]
df.to_excel()
完整代码
import pandas as pd
def excelHelper(readUrl,sheetName1,sheetName2,keyword1,keyword2,keyword3,keyword4,writeUrl):
df1 = pd.DataFrame(pd.read_excel(readUrl, sheetName1))
df2 = pd.DataFrame(pd.read_excel(readUrl,sheetName2))
for i, r in df.iterrows():#按行循环整个表
noneOfThem = 0#每一行的以上都未描述的初始值都设为0
if keyword1 in df.iloc[i,1]:#这个df.iloc[i,1]是指向当前行的第二个位置,也就是[1]
df1.iloc[i,2] = 1#如果符合就把对应位置设为1
noneOfThem = 1 #如果符合任意一项,都不能称为以上都未描述
if keyword2 in df.iloc[i,1]:
df1.iloc[i,3] = 1
noneOfThem = 1
if keyword3 in df.iloc[i,1]:
df1.iloc[i,3] = 1
noneOfThem = 1
if keyword4 in df.iloc[i,1]:
df1.iloc[i,3] = 1
noneOfThem = 1
if noneOfThem = 0:
df1.iloc[i,4] = 1#如果经过了上面的筛选后noneOfThem还是0,说明没有一条是符合的
with pd.ExcelWriter(writeUrl) as writer:
df1.to_excel(writer,sheet_name=sheetName1,index=False)
df2.to_excel(writer, sheet_name=sheetName2,index=False)
excelHelper('C:\somewhere\fileName.xls','Sheet1','Sheet2','小朋友','青年人','可爱','美丽','C:\somewhere\newFileName.xls')