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

Pandas:关联日期汇率换算后按日汇总存取款金额的实现方法

实现方案

前置假设

  • 交易DataFrame命名为df_trans,包含字段:账号/取款金额/存款金额/交易日期/币种
  • 欧元兑英镑汇率DataFrame命名为df_eur_gbp,包含字段:日期/汇率(值为1欧元可兑换的英镑数量)
  • 美元兑英镑汇率DataFrame命名为df_usd_gbp,包含字段:日期/汇率(值为1美元可兑换的英镑数量)

步骤说明

  1. 统一所有日期字段为datetime格式,避免关联失败
  2. 合并两个汇率表生成全币种汇率映射表,补充英镑本身的汇率(1:1)
  3. 交易表关联汇率表,匹配对应日期对应币种的英镑汇率
  4. 换算存取款金额为英镑单位
  5. 按日期分组汇总每日总存取款额

完整代码

import pandas as pd

# 1. 统一日期格式
df_trans['交易日期'] = pd.to_datetime(df_trans['交易日期'])
df_eur_gbp['日期'] = pd.to_datetime(df_eur_gbp['日期'])
df_usd_gbp['日期'] = pd.to_datetime(df_usd_gbp['日期'])

# 2. 合并汇率表,生成统一汇率映射
df_eur_gbp['币种'] = 'EUR'
df_usd_gbp['币种'] = 'USD'
# 拼接两个汇率表,补充GBP的汇率(1英镑=1英镑)
df_rate = pd.concat([df_eur_gbp, df_usd_gbp], ignore_index=True)
# 生成GBP的全量日期汇率,避免英镑交易匹配失败
gbp_dates = pd.date_range(start=df_trans['交易日期'].min(), end=df_trans['交易日期'].max())
df_gbp_rate = pd.DataFrame({'日期': gbp_dates, '汇率': 1, '币种': 'GBP'})
df_rate = pd.concat([df_rate, df_gbp_rate], ignore_index=True)

# 3. 交易表关联汇率表
df_trans = df_trans.merge(
    df_rate,
    left_on=['交易日期', '币种'],
    right_on=['日期', '币种'],
    how='left'
)

# 可选:检查是否有缺失汇率的记录,按需处理(删除/手动填充汇率)
# print(df_trans[df_trans['汇率'].isna()])

# 4. 换算存取款金额为英镑
df_trans['取款金额_GBP'] = df_trans['取款金额'] * df_trans['汇率']
df_trans['存款金额_GBP'] = df_trans['存款金额'] * df_trans['汇率']

# 5. 按日期分组汇总
df_daily_summary = df_trans.groupby('交易日期', as_index=False).agg(
    每日总取款额_GBP=('取款金额_GBP', 'sum'),
    每日总存款额_GBP=('存款金额_GBP', 'sum')
)

# 输出结果
print(df_daily_summary)

提示:如果交易数据中包含EUR/USD/GBP之外的其他币种,只需补充对应币种的每日汇率表,按上述EUR/USD的处理方式添加币种标识后拼入df_rate即可正常匹配换算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:45:05