将函数应用于两个 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' 屏幕名称是实际的全名。
我正在尝试将以下函数应用于 Fullname
和 Screen_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)
我正在 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' 屏幕名称是实际的全名。
我正在尝试将以下函数应用于 Fullname
和 Screen_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)