pandas中遍歷dataframe的每一個元素的實現
阿新 • • 發佈:2020-01-09
假如有一個需求場景需要遍歷一個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迴圈要快很多,善用這些高階函式會讓你事半功倍。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。