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通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
用Python编写web API的教程
Apr 30 Python
Python之re操作方法(详解)
Jun 14 Python
Python 调用 zabbix api的方法示例
Jan 06 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
Python 读取串口数据,动态绘图的示例
Jul 02 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
Sep 26 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
python读取yaml文件后修改写入本地实例
Apr 27 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 Python
Python 发送SMTP邮件的简单教程
Jun 24 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 缩略图实现函数代码
2011/06/23 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
第九篇Bootstrap导航菜单创建步骤详解
2016/06/21 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python 解析XML文件
2009/04/15 Python
分享一个常用的Python模拟登陆类
2015/03/29 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
python获取本机所有IP地址的方法
2018/12/26 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
浅析python连接数据库的重要事项
2021/02/22 Python
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
捐款倡议书范文
2014/02/02 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
自主招生英文自荐信
2015/03/25 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
运动会观后感
2015/06/09 职场文书
总结会主持词
2015/07/02 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
go goth封装第三方认证库示例详解
2022/08/14 Golang