Jin*_*Lee 3 python string dataframe pandas
我是 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:
检查整个列中的任何项目compNames['keyword']是否包含在df['content']
如果有匹配项,则将匹配的单词作为df数据帧的单独列返回(例如df['matchedName'])
如果有多个匹配项,则为对应的条目创建一个匹配词列表 df['content']
最后,通过使用and
作为我的关键变量加入dfandcompNamesdf['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']])
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我会得到一个空列表 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()])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6491 次 |
| 最近记录: |