从公司名称(非标准)熊猫获取股票代码

时间:2017-07-14 05:12:43

标签: python pandas dataframe mapping quantitative-finance

鉴于公司名称(非标准后缀和表单),我想在我的 df 中创建一个新列,其中包含其股票代码。我可以根据另一个查找/密钥表来提取股票代码,但每个公司名称的形式在表格之间不是100%一致。
我有两个数据集:
1.名称清单(df
2.将股票代码映射到名称(dfKey

两家公司的名称并不总是一样,所以我不能df['Ticker']=np.where(df['companyName']==dfKey['companyName'],dfKey['Ticker'].NaN)

即使是一个解决方案,我可以获得70-90%的正确率(我真正的数据集是成千上万的公司,只有一些数据比没有好;有些数据不可能像CRM中的Salesforce一样解码)。

我的样本df s:

import numpy as np
import pandas as pd

raw_data = {       
    'companyName1': ['General Electric','NVIDA Corporation', 'Blizzard', 'CRM', 'Google', 'Tesla']} 
df = pd.DataFrame(raw_data , columns = ['companyName1'])
#dfKey.set_index('Code', inplace=True) #Set Code as Row Index
print(df)

raw_dataKey = {'Ticker': ['GE','NVID', 'ATVI', 'CRM', 'GOOGL', 'TSLA'],       
    'companyName2': ['General Electric Company','NVIDA Corp', 'Activision', 'SalesForce', 'Google', 'Tesla Inc']} 
dfKey = pd.DataFrame(raw_dataKey , columns = ['Ticker', 'companyName2'])
#dfKey.set_index('Code', inplace=True) #Set Code as Row Index
print(dfKey)

期望的输出:

          companyName1 Ticker
0     General Electric     GE
1    NVIDA Corporation   NVID
2  Activision Blizzard   ATVI
3                  CRM    NaN
4               Google   GOOG
5                Tesla   TSLA

我已经尝试了某种形式的分解,然后比较第一个单词(这应该是一个足够好的解决方案),但我一直对如何处理数据帧中的列表感到困惑。

df['companyNameSplit'] = df['companyName'].str.split(' ')

我还尝试通过粘贴公司名称修改URL调用,但无法看到我得到的内容 (àlaGetting stock symbol from company name

import urllib
url='http://d.yimg.com/autoc.finance.yahoo.com/autoc?query=Thomas%20Scott&callback=YAHOO.Finance.SymbolSuggest.ssCallback'
data = urllib.request.urlopen(url).read()

我想念的其他想法?

2 个答案:

答案 0 :(得分:1)

以下是您如何匹配公司名称的第一个字:

if selectedIndex == 0 {

        vc.view.frame.size.height = 480

    }

    if selectedIndex == 1 {

        vc.view.frame.size.height = 448

    }

    if selectedIndex == 2 {

        vc.view.frame.size.height = 715

    }

    if selectedIndex == 3 {

        vc.view.frame.size.height = 480

    }

答案 1 :(得分:0)

想象一下我必须绘制以下两家公司的地图

1。指令商用机 2.纽约市国家银行

从结果中,我们可以看到国际股票与大多数股票相匹配的第一个单词,并且它出现了。

结果:只考虑了前几行

Ticker  companyName1

0 NaN IBM

1台IBM International Business Machines

2台IFF国际商用机器

3台IGT国际商用机器

4台INSW国际商用机

5台IP国际商务机器

6个NaN Google

7 NBHC纽约市国家银行

8 NFG纽约国家银行

9纽约NGG国家银行

纽约市10 NHI国家银行