2017-11-07 8 views
2

私は、私がわかりやすい方法でそれらを操作するのに役立つ別のコードにマップする必要がある通貨のデータベースを作成していますITシステム。既存の列が新しい値にマップされた関数への入力として新しいパンダデータフレーム

次のように私のデータベースがロードされます。

CCYがあるどんな通貨である
url2 = "My Mapping csv" 
Which has a format as below: 
Unique CCY Pairs  CCYs 
USDJPY   JPY 
EURAUD   ADEU 
USDRUB   RUB 
AUDKRW   KWAD 
EURUSD   EUR 
AUDJPY   JYAD 
EURJPY   JYEU 

mapp = pd.read_csv(url2) 
mapp = mapp.set_index('Unique CCY Pairs') 
mapp.loc[CCY].values[0] $ 

:私も経て、私は添付して、私はそこに値にアクセスマッピングガイドをロードしています

url = "My RawData csv" 

The csv has the below format: 
Underlying Notional 
AUDBRL  50,000 
AUDCAD  100,000 
AUDNZD  20,000 
USDJPY  15,000 
AUDKRW  12,000 

etc 

data = pd.read_csv(url) 
data = data.dropna() $ 

それぞれの時点で これに基づいて、既存のデータベースに、データフレームの新しいCCY値列にマップされた値を与えるループを作成します。

私は明らかに動作しなかったラムダ関数とマップ関数の間にこだわってしまった。

for CCY in data.Underlying: 
data["new"] = mapp.loc[CCY].values[0] 

上記の新しい作成した列に追加唯一のユニークな値があるように、新しい入力が割り当てられている間、ループ取得されていないデータ[「新しい」]として動作しませんでした。 私のデータベースはかなり大きいので、これをできるだけ効果的にする方法を模索しています。

ご協力いただきありがとうございます。

+0

IIUCを、 'データ[ "新しい"] = mapp.loc [data.Underlying] .values ' –

答えて

0

その非常に期待される出力が何であるかについての明確な、一般的には、あなたがループせずにマッピングすることができません

data['New'] = data['Underlying'].map(mapp['CCYs']) 

    Underlying Notional New 
0 AUDBRL  50,000  NaN 
1 AUDCAD  100,000  NaN 
2 AUDNZD  20,000  NaN 
3 USDJPY  15,000  JPY 
4 AUDKRW  12,000  KWAD 
関連する問題