2017-07-14 20 views
0

会社名(非標準のサフィックスとフォーム)を入力して、私はdfの株価を新しい列にしたいと考えています。私は別のルックアップ/キーテーブルに基づいてティッカーを引き出すことができますが、各企業名の形式はテーブル間で100%一貫していません。私はdf['Ticker']=np.where(df['companyName']==dfKey['companyName'],dfKey['Ticker'].NaN)を行うことはできません名前両社の名前は常に同じではない名前(dfKey会社名(非標準)パンダから株式ティッカーを取得

にティッカーの(df
2.マッピングの
1.リスト:
私は2つのデータセットを持っています

実際のデータセットは何千もの企業であり、データのほんの一部だけが優れていて、CRMからSalesforceのようにデコードできないものもあります。

マイサンプルdf S:

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

私はすでに十分に良いことがあります最初の単語を(比較各アップして、分割のいくつかのフォームを試してみた:

所望の出力が

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) 

ソリューション)、データフレーム内のリストをどのように扱うかについて混乱し続けています。

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

私もちょうど私が私は (ラ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() 

他のアイデアを得るものを見るために無駄に会社名に貼り付けることにより、URLの呼び出しを修正しようとしました見つからない?

答えて

1

は、ここでは、会社名の最初の単語に一致させることができます方法は次のとおりです。

In [36]: df['first_word'] = df.companyName1.str.split(' ').str[0] 

In [37]: dfKey['first_word'] = dfKey.companyName2.str.split(' ').str[0] 

In [38]: pd.merge(df, dfKey, on='first_word', how='outer') 
Out[38]: 
     companyName1 first_word Ticker    companyName2 
0 General Electric  General  GE General Electric Company 
1 NVIDA Corporation  NVIDA NVID    NVIDA Corp 
2   Blizzard Blizzard NaN      NaN 
3    CRM   CRM NaN      NaN 
4    Google  Google GOOGL     Google 
5    Tesla  Tesla TSLA     Tesla Inc 
6    NaN Activision ATVI    Activision 
7    NaN SalesForce CRM    SalesForce 
+0

感謝!!検索する方法があるのだろうか?名前1の列の文字列の一部が、パンダのデータフレーム全体で列2の列に含まれているかどうかを調べる。 – whs2k

関連する問題