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多线程编程(六):可重入锁RLock
Apr 05 Python
python3实现跳一跳点击跳跃
Jan 08 Python
Python3.x爬虫下载网页图片的实例讲解
May 22 Python
Sanic框架路由用法实例分析
Jul 16 Python
python实现彩票系统
Jun 28 Python
python发送告警邮件脚本
Sep 17 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
教你如何编写、保存与运行Python程序的方法
Jul 12 Python
Python Django基础二之URL路由系统
Jul 18 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
详解Python 3.10 中的新功能和变化
Apr 28 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中使用curl_init函数的说明
2010/11/02 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
JS设计模式之惰性模式(二)
2017/09/29 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
[10:34]DOTA2上海特级锦标赛全纪录
2016/03/25 DOTA
[05:59]带你看看DPC的台前幕后
2021/03/11 DOTA
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
python实现人脸识别经典算法(一) 特征脸法
2018/03/13 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
浅析python中while循环和for循环
2019/11/19 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
某公司面试题
2012/03/05 面试题
动物科学专业毕业生的自我评价
2013/11/29 职场文书
迟到检讨书500字
2014/02/05 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
教师节大会主持词
2015/07/06 职场文书
尊师重教主题班会
2015/08/14 职场文书
详解redis分布式锁的这些坑
2021/05/19 Redis
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
JavaScript组合继承详解
2021/11/07 Javascript
Oracle锁表解决方法的详细记录
2022/06/05 Oracle