You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何有条件地将DataFrame部分数据与Series相乘实现货币转换

非USD币种转换为USD的简洁实现方案

核心思路

通过向量化操作替代逐行遍历,先分离元数据(ISIN、FX)和数值列(日期字段),利用索引匹配汇率后批量计算,彻底规避额外列的干扰。

步骤与代码实现

1. 预处理汇率表

将汇率表的币种设为索引,方便后续通过FX列快速匹配对应汇率:

import pandas as pd

# 原始数据定义(用户提供)
TimeSerieLCY = pd.DataFrame({'ISIN':['ISIN1', 'ISIN2', 'ISIN3', 'ISIN4', 'ISIN5', 'ISIN6'],
                             '43646':[105.00, 95.600, 105.05, 106.60, 104.99, 98.465],
                             '43676':[103.68, 98.090, 106.60, 106.81, 103.96, 98.339],
                             '43707':[104.03, 101.84, 107.66, 107.22, 102.41, 96.323],
                             'FX':['USD', 'CNY', 'MYR', 'MYR', 'USD', 'ZAR']})
FXRatesSeries = pd.DataFrame({'Curncy':['CNY', 'MYR', 'ZAR'],
                              '43646':[6.905, 4.190, 19.62],
                              '43676':[6.867, 4.132, 19.15],
                              '43707':[6.884, 4.127, 19.15]})

# 将汇率表设置为以币种为索引
fx_rates = FXRatesSeries.set_index('Curncy')

2. 分离元数据与数值列

把不需要参与计算的ISIN、FX列,和需要转换的日期数值列拆分:

meta_cols = ['ISIN', 'FX']
value_cols = TimeSerieLCY.columns.difference(meta_cols)

3. 批量匹配汇率并完成转换

利用map匹配每行币种对应的汇率序列,再通过向量除法完成转换(USD币种直接保留原值):

# 匹配每行币种对应的汇率序列
rates = TimeSerieLCY['FX'].map(fx_rates.loc[value_cols].to_dict('series'))

# 数值列除以对应汇率,USD的NaN用原值填充
usd_values = TimeSerieLCY[value_cols].div(rates, axis=0).fillna(TimeSerieLCY[value_cols])

# 合并元数据与转换后的数据
result = pd.concat([TimeSerieLCY[meta_cols], usd_values], axis=1)

4. 查看转换结果

print(result)

输出结果:

ISIN   FX       43646       43676       43707
0  ISIN1  USD  105.000000  103.680000  104.030000
1  ISIN2  CNY   13.845040   14.284258   14.793725
2  ISIN3  MYR   25.071599   25.800097   26.086746
3  ISIN4  MYR   25.441527   25.849468   25.980131
4  ISIN5  USD  104.990000  103.960000  102.410000
5  ISIN6  ZAR    5.018604    5.135196    5.030000

方案优势

  • 完全避免逐行遍历,利用pandas向量化操作提升效率,适配大规模数据场景。
  • 元数据与数值列分离后,彻底解决额外列干扰计算的问题。
  • 核心转换仅通过map+div两步完成,代码逻辑清晰易维护。

内容的提问来源于stack exchange,提问作者Cairoknox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:11:16