Pandas DataFrame中的tuple元素遍历的实现
pandas中遍历dataframe的每一个元素
假如有一个需求场景需要遍历一个csv或excel中的每一个元素,判断这个元素是否含有某个关键字
那么可以用python的pandas库来实现。
方法一:
pandas的dataframe有一个很好用的函数applymap,它可以把某个函数应用到dataframe的每一个元素上,而且比常规的for循环去遍历每个元素要快很多。如下是相关代码:
importpandasaspd data=[["str","ewt","earw"],["agter","awetg","aeorgh"]] dataframe1=pd.DataFrame(data=data,columns=["name1","name2","name3"]) print(dataframe1) bool_array=dataframe1.applymap(lambdax:"w"inx) out_array=dataframe1[bool_array] print(out_array) >> name1name2name3 0strewtearw 1agterawetgaeorgh name1name2name3 0NaNewtearw 1NaNawetgNaN
代码中,bool_array为一个逻辑矩阵,满足条件元素的位置为true,否则为false。然后通过逻辑矩阵去索引dataframe1,就可以得出满足条件的元素。
方法二:
第一种方法是一次性遍历每个元素,这样不好分column去处理,那换一种方式可以每次遍历一列
#接上面代码 file_columns=dataframe1.columns.tolist() forcolumninfile_columns: bool_index=dataframe1[column].str.contains("w") filter_data=dataframe1[column][bool_index] print(filter_data) >> Series([],Name:name1,dtype:object) 0ewt 1awetg Name:name2,dtype:object 0earw Name:name3,dtype:object
代码种Series.str.contains是Series才有的一个操作。另外,filter_data只输出每一列中满足条件的元素,更方便下一步的操作。
简单说明:
针对pandas的dataframe和series,有强大的高阶函数:apply,applymap和map函数等,它们比简单的for循环要快很多,善用这些高阶函数会让你事半功倍。
PandasDataFrame中的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
importpandasaspd s_df_untuple=s_df.applymap(lambdax:x[0])#对dataframe中所有元素,只取tuple中的第0个 s_df_untuple=s_df_untuple.reset_index()#把索引变为单独的一列 s_df_untuple.rename(columns={"index":'核心关键词'},inplace=True)#对索引这一列重命名
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。