鉴于公司名称(非标准后缀和表单),我想在我的 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()
我想念的其他想法?
答案 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国家银行