python对dataframe进行操作?
建议参考一下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实例!
希望能够采纳!
我看过这些操作,但是我感觉都不想要的。我是有一个筛选条件的,就如那个ls1列表,实际上这个列表应该有10个元素;然后就是listmesh一般都有100个元素。我是想筛选ls1中的元素是否在listmehs列表中,不在就跳过,在的话就获取list_mesh.index(i)+1(这样就刚好等于id索引),然后我根据id索引把这一行数据提取出来写到一个新的空dataframe里面去,
emmmm....