python对dataframe进行操作?

比方说这个dataframe,我要对它进行筛选,仅保留筛选后的数据。eg:我有一个列表ls1=['D','A'],listmesh是包含dataframe的mesh列的列... 比方说这个dataframe,我要对它进行筛选,仅保留筛选后的数据。eg:我有一个列表ls1=['D','A'], listmesh是包含dataframe的mesh列的列表;我写一个循环:for i in ls1: for j in list_mesh: if i in j: ........就是想筛选出mesh列中含有ls1元素的那行数据,dataframe其他不属于的行就舍去。我想的是创建一个空的dataframe,如果循环中的if条件满足就向这个空dataframe写入对应的行数据。求求大佬们指点。! 展开
 我来答
python高手养成
2021-11-02 · TA获得超过733个赞
知道大有可为答主
回答量:4123
采纳率:100%
帮助的人:171万
展开全部

建议参考一下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里面去,
九分甜情感屋

2021-11-02 · 爱情总会在下一个路口与你不期而遇!
九分甜情感屋
采纳数:252 获赞数:304

向TA提问 私信TA
展开全部
用一个字符截取函数size就可以只读取其中的数字。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bill8341
高粉答主

2021-11-02 · 关注我不会让你失望
知道大有可为答主
回答量:1.8万
采纳率:95%
帮助的人:3667万
展开全部
几乎所有的dataframe的操作都用不上for循环。但感觉你的描述不清晰,不明白你到底要做什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2021-11-02 · TA获得超过203个赞
知道答主
回答量:1万
采纳率:1%
帮助的人:428万
展开全部
筛选出mesh列中含有ls1元素的那行数据,dataframe其他不属于的行就舍去。我想的是创建一个空的dataframe,如果循环中的if条件满足就向这个空dataframe写入对应的行数据。求求大佬们指点。!
追问
emmmm....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2021-11-02 · TA获得超过398个赞
知道答主
回答量:8419
采纳率:5%
帮助的人:350万
展开全部
fetchall这个返回的是多个元组,你找到通过列表名称,获取信息了?不通过下标获取
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式