python基于部分字符串匹配合并两个panda数据帧
我是Python新手,在连接两个Panda数据帧时遇到了很多困难,因为合并应该基于部分字符串匹配。更具体地说: 我有一个名为python基于部分字符串匹配合并两个panda数据帧,python,string,pandas,dataframe,Python,String,Pandas,Dataframe,我是Python新手,在连接两个Panda数据帧时遇到了很多困难,因为合并应该基于部分字符串匹配。更具体地说: 我有一个名为df的数据帧,看起来像这样: {“writenat”:“2015-01-01T18:31:01+00:00”,“内容”:“印度的银行将在2015年增加作为资本缓冲的债券的销售”} 其中大约有10000行看起来像上面的 现在,我有另一个名为compNames的数据帧,它看起来像这样: {“股票代码”:“A”,“名称”:“安捷伦科技有限公司”,“关键字”:“安捷伦”} 我有大约
df
的数据帧,看起来像这样:
{“writenat”:“2015-01-01T18:31:01+00:00”,“内容”:“印度的银行将在2015年增加作为资本缓冲的债券的销售”}
其中大约有10000行看起来像上面的
现在,我有另一个名为compNames
的数据帧,它看起来像这样:
{“股票代码”:“A”,“名称”:“安捷伦科技有限公司”,“关键字”:“安捷伦”}
我有大约500行用于compNames
dataframe
我试图通过以下机制将compNames
中的股票代码值分配给df
的匹配条目:
compNames['keyword']
中是否有任何项目
包含在df['content']
df
数据帧的列(例如df['matchedName']
)
df['content']
df['matchedName']
和
compNames['keyword']
作为我的关键变量
# Load select company names
compNames = pd.read_csv("compNameList_LARA.txt")
compList = '|'.join(compNames['keyword'].tolist())
df['compMatch'] = df.content.str.contains(compList)
# drop unmatched articles
df = df[df['compMatch']==True]
# assign firm names
df['matchedName'] = df['content'].apply(lambda x: [x for x in compNames['keyword'].tolist() if x in df['content']])
但是,当我这样做时,我会得到一个df['matchedName']
你能帮我找出哪里出了问题吗?非常感谢
-金明白了。我只需要做:
df['content'] = df['content'].str.lower().str.split()
df['matchedName'] = df['content'].apply(lambda x: [item for item in x if item in compNames['keyword'].tolist()])