溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Pandas DataFrame中的tuple元素遍歷的實(shí)現(xiàn)

發(fā)布時間:2021-06-03 17:31:44 來源:億速云 閱讀:260 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)Pandas DataFrame中的tuple元素遍歷的實(shí)現(xiàn),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

pandas中遍歷dataframe的每一個元素

假如有一個需求場景需要遍歷一個csv或excel中的每一個元素,判斷這個元素是否含有某個關(guān)鍵字

那么可以用python的pandas庫來實(shí)現(xiàn)。

方法一:

pandas的dataframe有一個很好用的函數(shù)applymap,它可以把某個函數(shù)應(yīng)用到dataframe的每一個元素上,而且比常規(guī)的for循環(huán)去遍歷每個元素要快很多。如下是相關(guān)代碼:

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,有強(qiáng)大的高階函數(shù):apply,applymap和map函數(shù)等,它們比簡單的for循環(huán)要快很多,善用這些高階函數(shù)會讓你事半功倍。

Pandas DataFrame中的tuple元素遍歷

在用Word2vec計算出詞語的相似度之后,得到的DataFrame格式如下:

1. 索引(index)為輸入的關(guān)鍵詞,從第0列開始為相似度最高的詞語和它的余弦相似度。

2. 這個DataFrame 中每一個元素,比如(通話, 0.21321064233779907)的格式為tuple。

輸入數(shù)據(jù):

                            0                           1 
銀行  (通話, 0.21321064233779907)   (鉆石卡, 0.1743093729019165)  
手機(jī)  (想要, 0.21755412220954895)   (長時間, 0.16086308658123016)

期望輸出的數(shù)據(jù)

1. 只取相似度最高的詞語,丟棄余弦相似度。

2. 把關(guān)鍵詞從索引中取出來,單獨(dú)作為1列。

期望輸出:

 核心關(guān)鍵詞   0    1 
0    銀行  通話  鉆石卡 
1    手機(jī)  想要  長時間

Python 實(shí)現(xiàn)的代碼:

主要使用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() # 把索引變?yōu)閱为?dú)的一列
s_df_untuple.rename(columns={"index": '核心關(guān)鍵詞'}, inplace=True) # 對索引這一列重命名

看完上述內(nèi)容,你們對Pandas DataFrame中的tuple元素遍歷的實(shí)現(xiàn)有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI