Pandas DataFrame中的tuple元素遍历的实现


Posted in Python onOctober 23, 2019

pandas中遍历dataframe的每一个元素

假如有一个需求场景需要遍历一个csv或excel中的每一个元素,判断这个元素是否含有某个关键字

那么可以用python的pandas库来实现。

方法一:

pandas的dataframe有一个很好用的函数applymap,它可以把某个函数应用到dataframe的每一个元素上,而且比常规的for循环去遍历每个元素要快很多。如下是相关代码:

import pandas as pd
data = [["str","ewt","earw"],["agter","awetg","aeorgh"]]
dataframe1 = pd.DataFrame(data=data,columns=["name1","name2","name3"])
print(dataframe1)
bool_array = dataframe1.applymap(lambda x:"w" in x)
out_array = dataframe1[bool_array]
print(out_array)

>>
  name1 name2  name3
0  str  ewt  earw
1 agter awetg aeorgh

 name1 name2 name3
0  NaN  ewt earw
1  NaN awetg  NaN

代码中,bool_array为一个逻辑矩阵,满足条件元素的位置为true,否则为false。然后通过逻辑矩阵去索引dataframe1,就可以得出满足条件的元素。

方法二:

第一种方法是一次性遍历每个元素,这样不好分column去处理,那换一种方式可以每次遍历一列

#接上面代码
file_columns = dataframe1.columns.tolist()
for column in file_columns:
  bool_index = dataframe1[column].str.contains("w")
  filter_data = dataframe1[column][bool_index] 
  print(filter_data)

>>
Series([], Name: name1, dtype: object)
0   ewt
1  awetg
Name: name2, dtype: object
0  earw
Name: name3, dtype: object

代码种 Series.str.contains 是 Series 才有的一个操作。另外,filter_data只输出每一列中满足条件的元素,更方便下一步的操作。

简单说明:

针对pandas的dataframe和series,有强大的高阶函数:apply,applymap和map函数等,它们比简单的for循环要快很多,善用这些高阶函数会让你事半功倍。

Pandas DataFrame中的tuple元素遍历

在用Word2vec计算出词语的相似度之后,得到的DataFrame格式如下:

1. 索引(index)为输入的关键词,从第0列开始为相似度最高的词语和它的余弦相似度。

2. 这个DataFrame 中每一个元素,比如(通话, 0.21321064233779907)的格式为tuple。

输入数据:

                            0                           1 
银行  (通话, 0.21321064233779907)   (钻石卡, 0.1743093729019165)  
手机  (想要, 0.21755412220954895)   (长时间, 0.16086308658123016)

期望输出的数据

1. 只取相似度最高的词语,丢弃余弦相似度。

2. 把关键词从索引中取出来,单独作为1列。

期望输出:

 核心关键词   0    1 
0    银行  通话  钻石卡 
1    手机  想要  长时间

Python 实现的代码:

主要使用1)applymap,2)lambda,3)reset_index,4)rename

import pandas as pd
 
s_df_untuple = s_df.applymap(lambda x: x[0]) # 对dataframe中所有元素,只取tuple中的第0个
s_df_untuple = s_df_untuple.reset_index() # 把索引变为单独的一列
s_df_untuple.rename(columns={"index": '核心关键词'}, inplace=True) # 对索引这一列重命名

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
探究数组排序提升Python程序的循环的运行效率的原因
Apr 01 Python
Python简单进程锁代码实例
Apr 27 Python
python实现字符串和日期相互转换的方法
May 13 Python
python中logging包的使用总结
Feb 28 Python
mac下如何将python2.7改为python3
Jul 13 Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 Python
Python hmac模块使用实例解析
Dec 24 Python
pytorch之ImageFolder使用详解
Jan 06 Python
Python列表操作方法详解
Feb 09 Python
python画图常规设置方式
Mar 05 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
Mar 19 Python
python中绕过反爬虫的方法总结
Nov 25 Python
10行Python代码计算汽车数量的实现方法
Oct 23 #Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 #Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 #Python
Python之Numpy的超实用基础详细教程
Oct 23 #Python
Python从列表推导到zip()函数的5种技巧总结
Oct 23 #Python
Python箱型图绘制与特征值获取过程解析
Oct 22 #Python
Python使用贪婪算法解决问题
Oct 22 #Python
You might like
PHP 创建标签云函数代码
2010/05/26 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
2017/04/01 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
javascript attachEvent绑定多个事件执行顺序问题
2010/10/20 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
JavaScript的词法结构精华篇
2018/10/17 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
Lulu Guinness露露·吉尼斯官网:红唇包
2019/02/03 全球购物
ETO男装官方网店:ETO Jeans
2019/02/28 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
软件缺陷的分类都有哪些
2014/08/22 面试题
工程管理造价应届生求职信
2013/11/13 职场文书
九年级家长会邀请函
2014/01/15 职场文书
费城故事观后感
2015/06/10 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang