比较set数据类型的数据帧

时间:2017-10-04 11:54:30

标签: python pandas

第一个数据框有一个名为“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”相匹配。

0 个答案:

没有答案