背景:社团与为中国而教合作,需要招募志愿者,使用问卷星发布了问卷,问题很多,其中有一个多选题,询问志愿者的空闲时间安排.最后需要按志愿者的时间安排,但是下载下来的表格却让人头疼

需要把同一个时间段的所有人选出来
于是用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)
完整项目获取点这里
本文介绍了一种使用Python处理复杂问卷数据的方法,通过解析Excel文件中的多选题选项,整理出不同时间段志愿者的名单,并将结果清晰地展示在Excel表格中。

被折叠的 条评论
为什么被折叠?



