将函数应用于两个 DataFrame 列并根据结果创建新列

Apply a function to two DataFrame columns and create new column from result

我正在 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 中的所有值,以获得 'similar' 这两个特征的得分并添加新的此分数列到 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

任何指向正确方向的指针都将不胜感激。
非常感谢!

改为:

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)