首页 > 编程 > Python > 正文

pandas中遍历dataframe的每一个元素的实现

2019-11-25 11:33:02
字体:
来源:转载
供稿:网友

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

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

方法一:

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

import pandas as pddata = [["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  name30  str  ewt  earw1 agter awetg aeorgh  name1 name2 name30  NaN  ewt earw1  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   ewt1  awetgName: name2, dtype: object0  earwName: name3, dtype: object

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

简单说明:

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表