我正在创建一个货币数据库,我需要将其映射到不同的代码,这将帮助我以更容易的方式操纵它们,这是我的IT系统可以理解的。
我的数据库加载如下:
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() $
我也在加载我附加的Mapping指南,并通过以下方式访问那里的值:
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] $
其中CCY是每个时间点的任何货币。 现在基于此我想在我现有的数据库中创建一个循环,它将在我的数据帧的新CCY值列中为我提供映射值:
我已经开始使用类似下面的内容,这些内容显然无效,然后卡在lambda和map函数之间。
for CCY in data.Underlying:
data["new"] = mapp.loc[CCY].values[0]
上述操作不起作用,因为在分配新输入时数据[" new"]没有循环,因此在新创建的列中只添加了一个唯一值。 我正在寻找方法使其尽可能有效,因为我的数据库将非常大。
提前感谢您的帮助。
答案 0 :(得分: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