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循環要快很多,善用這些高階函數會讓你事半功倍。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM