Pandas DataFrame中Tuple元素的高效遍历与处理技巧

周予安
周予安
发布时间:2026-10-13| 3人浏览过
原创

本文介绍在Python Pandas中处理包含Tuple元素的DataFrame的高效方法。针对Word2vec输出的相似度数据,通过applymap结合lambda函数提取元组首个元素,并利用reset_index和rename重构数据结构,实现从索引提取关键词及过滤相似度值,提供比常规循环更优的性能方案。

Pandas DataFrame元素遍历基础方法

在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进行索引操作,即可筛选出所有符合条件的元素。

方法二:

第一种方法是一次性遍历所有元素,这种方式难以按列分别处理。因此,可以换一种思路,每次仅遍历一列数据。


#接上面代码
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循环。熟练运用这些高阶函数能够显著提升开发效率。

处理Word2vec输出的Tuple元素

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. 将关键词从索引中提取出来,单独作为一列数据。

期望输出示例:

核心关键词 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。