背景:社团与为中国而教合作,需要招募志愿者,使用问卷星发布了问卷,问题很多,其中有一个多选题,询问志愿者的空闲时间安排.最后需要按志愿者的时间安排,但是下载下来的表格却让人头疼
需要把同一个时间段的所有人选出来
于是用python写了个小脚本,记录下
使用jupyter notebook
import pandas as pd data = pd.read_excel('C:\\Users\\dell\\Desktop\\aaa.xlsx', encoding = 'utf-8') #读取原始数据,指定UTF-8编码(需要用文本编辑器将数据装换为UTF-8编码) data.drop_duplicates(['5、请输入您的QQ账号','4、请输入您的手机号码:'],keep='last') #去重 data["1、您的姓名:"]=data["1、您的姓名:"]+"("+data["6、您想要教的科目"]+")" data.set_index(["1、您的姓名:"], inplace=True) #指定列索引为姓名+意向课程 12345678
#data_是处理数据的df,根据特殊字符将这一个大列分成若干小列 data_ = data["8、您能够参加的授课时间(课前二十分钟需进入课堂)"].str.split('┋',expand=True) data_ 123
#查找所有不重复时间段,储存在列表thelist thelist=[] for index, row in data_.iterrows(): #遍历每一行 for i in range(0,6): #每一列 if row[i]!="None" and row[i]!=None and (row[i] not in thelist): thelist.append(row[i]) 12345678
from pandas.core.frame import DataFrame y=[]#空列表储存某确定时间段的志愿者姓名+意愿 for x in range(0,13):#上述13个时间段 for index, row in data_.iterrows(): #遍历 for i in range(0,6): if row[i]==thelist[x]:#两者时间段相同 # print(index) y.append(index)#向y中加入索引(索引为姓名+意向) c={thelist[x]:y}#转成字典 cc=DataFrame(c)#转成df data_ = data_.reset_index()#重置索引为默认索引01234... data_=pd.concat([cc,data_], axis=1)#将上述df合并到data_中 data_.set_index(["1、您的姓名:"], inplace=True)#重新将索引换回姓名+意向 c={}#设回新列表字典,循环上述,只止所有时间段都被合并到data_ y=[] data_ 12345678910111213141516
时间下面的是姓名+意向,0123下面是时间等等删掉
del data_[0]#懒得查能不能一下删掉了,CV挺简单 del data_[1] del data_[2] del data_[3] del data_[4] del data_[5] del data_[6] data_ = data_.reset_index(drop=True) #将索引设为默认索引,并且不保留(drop=True) data_.to_excel('C:\\Users\\dell\\Desktop\\bbb.xlsx', encoding = 'utf-8',index=False) #保存到桌面,去除第一列索引(index=False)
完整项目获取点这里