发布网友 发布时间:2022-04-25 19:59
共5个回答
热心网友 时间:2022-04-18 06:27
建议参考一下dataframe文档,里面有相应的方法,不需要使用for循环遍历,for循环遍历会拖慢程序。对于dataframe中数据检索可以使用下面的方法。
【全部】df.values
【name列的数据】df['name'].values
【loc检索A列】df.loc['A']
【iloc进行行检索】df.iloc[0]
【直接使用名字进行列检索,但不适合行检索】df['name']
第一步:准备一些数据定义一些变量
TOPLST = ['A', 'B', 'C'] # top10
PATH = 'test.xls' # 我生成的Excel测试文件位置
第二步:根据描述,你需要对比两个序列之间是否有交集?
这里简单定义一个函数(当然也可以不这样做):
def checkLst(lst1, lst2):
# 如果两个列表中有相同值,则返回True
for item in lst1:
if item in lst2:
return True
return False
第三步:实现我们的需求:这里主要还是使用索引,掌握dataframe的函数基础上,如何使用这些接口函数很重要。这里简单几行实现数据清洗功能。
def clearData(path, toplst):
df = pandas.read_excel(path)
# 找到需要判断的mesh列
mesh = df['mesh']
# 清除队列
clearilst = []
# 遍历每一行数据mesh.index是RangeIndex实例
for index in mesh.index:
# 判断top10和mesh列中是否有交集,如果没有交集则将索引加入删除队列
if not checkLst(toplst, mesh.iloc[index].split(';')):
# 将没有交集的行索引添加至清洗列表
clearilst.append(index)
# 清洗结果赋值
result = df.drop(index=clearilst, axis=0)
return result
完整的代码截图如下:
我们来看下运行效果:
完美运行,不用操心索引+1的问题,也不用再创建一个DataFrame实例!
希望能够采纳!
热心网友 时间:2022-04-18 07:45
用一个字符截取函数size就可以只读取其中的数字。热心网友 时间:2022-04-18 09:19
几乎所有的dataframe的操作都用不上for循环。但感觉你的描述不清晰,不明白你到底要做什么热心网友 时间:2022-04-18 11:11
筛选出mesh列中含有ls1元素的那行数据,dataframe其他不属于的行就舍去。我想的是创建一个空的dataframe,如果循环中的if条件满足就向这个空dataframe写入对应的行数据。求求大佬们指点。!追问emmmm....
热心网友 时间:2022-04-18 13:19
fetchall这个返回的是多个元组,你找到通过列表名称,获取信息了?不通过下标获取