我是 Python 新手,在连接两个 pandas 数据框时遇到很多麻烦,因为合并应该基于部分字符串匹配。进一步来说:
我有一个名为的数据框df
看起来像这样:
{ "writtenAt":"2015-01-01T18:31:01+00:00", "content":" India\u2019s banks will ramp up sales of bonds that act as capital buffers in 2015" }
其中大约有 10,000 行,如上所示。
现在,我有另一个名为compNames
,看起来像这样:
{ "ticker":"A", "name":"Agilent Technologies Inc.", "keyword":"Agilent" }
我有大约 500 行compNames
数据框。
我正在尝试分配一个股票代码值compNames
到匹配条目df
通过以下机制:
-
检查是否any整个列中的项目compNames['keyword']
是
包含在一个条目中df['content']
-
如果存在匹配,则将匹配的单词作为单独的单词返回
的栏目df
数据框(例如df['matchedName']
)
-
如果有多个匹配项,则创建一个匹配单词列表
到相应的条目df['content']
-
最后,加入df
and compNames
通过使用df['matchedName']
and
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']
你能帮我找出哪里出了问题吗?非常感谢!!
-Jin
弄清楚了。我只需要做:
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()])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)