第一个数据框有一个名为“name”的列,我需要将该列与另一个数据帧中的列进行比较。问题是,即使2个单词匹配而不是3个,也没关系。对于例如“amar ajay patil”和“amar patil”相同,因为即使缺少中间名,这个人也是一样的。我如何实现这一目标?
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
myst="""shantanu prabhakar oak, 905034 , 19:44
amar ajay patil, 905094 , 19:33
manoj ashok singh, 905154 , 21:56
"""
u_cols=['name', 'customer_id', 'current_tm']
myf = StringIO(myst)
import pandas as pd
df = pd.read_csv(StringIO(myst), sep=',', names = u_cols)
我的第二个数据框看起来像这样......
myst="""shantanu PRABHAKAR oak, 905034 , 19:44
amar patil, 905094 , 19:33
manoje ashoka singh, 905154 , 21:56
"""
u_cols=['ledger_name', 'customer_id', 'current_tm']
myf = StringIO(myst)
import pandas as pd
df1 = pd.read_csv(StringIO(myst), sep=',', names = u_cols)
这可以按预期工作:
df.merge(df1, left_on=df.name.str.lower(), right_on=df1.ledger_name.str.lower())
但是这没有,我得到一个错误:
df.merge(df1, left_on=df.name.str.lower().apply(set), right_on=df1.ledger_name.str.lower().apply(set))
更新:
我尝试将列类型转换为“set”,因为名称序列可能会更改。 “patil amar ajay”仍然是同一个人,应该与“amar ajay patil”相匹配。