2016-04-14 49 views
1

新列我在pandas.DataFrame工作使用python 3.5有以下欄目:應用功能兩個數據框列,並創建結果

dataframe.head(2) 

    TwitterID  Fullname Gender City  Screen_Name 
0  12345  John Smith  M  London  J_smith47 
1  25486  Emily Reid  F  Brighton emreid_uk 
     ... 

我想使用的功能screen_name和這樣做,就在想關於使用 SequenceMatcher獲得結果來確定'close'屏幕名稱與實際全名的關係。

我想下面的函數適用於所有值FullnameScreen_Name以分數爲這兩項功能如何「相似」是與這個分數的DataFrame添加新列。

from difflib import SequenceMatcher 

def similar(a, b): 
    x = SequenceMatcher(None, a, b).ratio() 
    score = x*100 
    results = round(score, 2) 
    return results 

for column in dataframe: 
    column[4] = similar(dataframe['Fullname'], dataframe['Screen_Name']) 

dataframe.head(40) 

我用了for循環,因爲我使用的數據不是很大。當我輸入字符串時,該函數可以正常工作,但不幸的是,這似乎不適用於我的DataFrame

任何指向正確的方向與此將不勝感激。
非常感謝!

回答

1

做,而不是:

def similar(row): 
    x = SequenceMatcher(None, row['FullName'], row['ScreenName']).ratio() 
    score = x*100 
    results = round(score, 2) 
    return results 

dataframe['result'] = dataframe.apply(lambda row: similar(row), axis=1) 
+0

嗨斯蒂芬,感謝您的幫助!我試過這個函數,出於某種原因它返回函數的地址而不是數值; '<功能類似於0x0BF8D9C0>'。你知道爲什麼會發生這種情況嗎? – RomainD

+0

我想你錯過了括號,shell只是告訴你「相似」(一個函數)而不是運行它。 – Thanos

+0

是的,這將解釋它。 – Stefan

相關問題