Pandas DataFrame中的tuple元素遍历的实现
作者:小晓酱 发布时间:2023-12-21 09:47:00
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) # 对索引这一列重命名
来源:https://blog.csdn.net/sinat_26811377/article/details/102679353


猜你喜欢
- 这篇文章主要介绍了python构造函数init实例方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 1. 内连接内连接:合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行。说人话就是,查询结果只包含它们匹配的行,不匹
- 年关将至,大家对疫情的关注度也愈发提升,本次使用PyQt5撰写100行代码写一个疫情信息快速查看工具。一.准备工作1.PyQt5PyQt 是
- Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典由键和对应值成对组成。字典也被称作关联数
- 1.echo和print的区别PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但
- 4. 选择最有效率的表名顺序(只在基于规则的优化器中有效)ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中
- 去过新浪或者搜狐吗?虽然我们都不愿意看广告,但是它们做广告的技术我们却应该学到手,这不,又一种很流行的做法儿,做成那种两边对称的对联式的广告
- 相信大家都做过九宫格的游戏,规则是要求填数字1-9在九个方格内,使横竖斜相加和相等。只填九个那可能有些简单,但是填25个,填49个,81个等
- 本文实例为大家分享了python3实现飞机大战的具体代码,供大家参考,具体内容如下以下是亲测Python飞机大战全部代码,在保证有pygam
- 本文实例讲述了python操作mongodb根据_id查询数据的实现方法。分享给大家供大家参考。具体分析如下:_id是mongodb自动生成
- 使用auto.js实现自动化每日打卡疫情原因,需要在家每天定时打卡,每天刚起床的时候避免不了出现注意力不集中或者是看不到app,点不到按钮什
- 在读取文件时候比如读取 xxx.csv 时候 可能报编码错误类似于'xxx' codec can't decode
- 最近重温了一下位图分割的相关内容,发现网络上位图分割原理讲得已经很清楚了,但是代码多为C++实现或者Matlab实现,因为需要Python的
- 我就废话不多说了,还是直接看代码吧!from time import ctimeimport threadingimport timedef
- 很早就在这里看到过解决方案,与嗷嗷讨论后发现这个方案还是很可靠的。当然,唯一的缺点就是每一个属性都要去Hack,但我在很多实践中,只用‘修正
- 前言现在在疫情阶段,想找一份不错的工作变得更为困难,很多人会选择去网上看招聘信息。可是招聘信息有一些是错综复杂的。而且不能把全部的信息全部罗
- 1、队列队列是一种遵循先进先出(FIFO)原则的数据结构。可以使用数组实现队列的基本操作。当进行入队操作的时候,即在队列尾部插入一个元素,由
- 第一步:创建django项目打开终端,切换到期望所写项目的地址:cd python3_django_projects;输入命令:django
- 今天主题是实现并发服务器,实现方法有多种版本,先从简单的单进程代码实现到多进程,多线程的实现,最终引入一些高级模块来实现并发TCP服务器。说
- 本文实例讲述了Python实现的圆形绘制。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-#! python3i