給定一個公司名稱(非標準後綴和表格),我想創建一個新的列在我的df
與股票行情。我可以根據另一個查找/關鍵表獲取股票,但每個公司名稱的表格在表格之間不是100%一致的。
我有兩個數據集:名稱(df
)
2.映射股票的人名(dfKey
)從公司名稱(非標準)獲取股票代碼熊貓
兩家公司的名稱並不總是相同的
1.列出,所以我不能做df['Ticker']=np.where(df['companyName']==dfKey['companyName'],dfKey['Ticker'].NaN)
即使是一個解決方案,我可以獲得70-90%的正確率也足夠了(我的真實數據集是成千上萬的公司,只是一些數據比沒有數據好;有些解決方案不可能像Salesforce一樣從CRM解碼)。
我的樣本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調用只是爲了看看我得到 (點菜Getting 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()
任何其他想法,我失蹤?
謝謝!我想知道是否有一種方法可以搜索並查看在Name1列中的任何部分字符串是否在整個熊貓數據框的Name2列中......將進一步調查。 – whs2k