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

如何在日期匹配时将df1的price与df2汇率相乘并添加至df1

解决方案

没问题,这是个很典型的DataFrame匹配计算场景,我来一步步帮你搞定:

核心思路

我们需要通过日期列精准匹配把两个DataFrame合并,再用price乘以对应日期的汇率得到新列priceEUR。用Pandas的merge方法就能轻松实现,具体步骤如下:

步骤1:统一日期列格式

首先要确保两个DataFrame的date列都是datetime类型,避免字符串格式差异导致匹配失败:

import pandas as pd

# 构造你的示例数据(你可以直接替换成自己的真实数据)
df1 = pd.DataFrame({
    'date': ['2019-12-21', '2019-10-25', '2019-10-24', '2019-12-13'],
    'price': [140, 91, 91, 70]
})

df2 = pd.DataFrame({
    'date': ['2019-12-21', '2019-12-22', '2019-10-25', '2019-10-24', '2019-12-13'],
    'exchange rate': [1.1097, 1.117, 1.1074, 1.1073, 1.108]  # 补充了你预期结果需要的对应汇率
})

# 转换日期列为datetime类型
df1['date'] = pd.to_datetime(df1['date'])
df2['date'] = pd.to_datetime(df2['date'])

步骤2:按日期合并DataFrame

使用merge方法做左连接(how='left'),这样能完整保留df1的所有行,同时匹配df2中对应日期的汇率:

# 按date列合并两个DataFrame
merged_df = df1.merge(df2, on='date', how='left')

步骤3:计算新列priceEUR

直接将price和exchange rate相乘,就能得到转换后的欧元价格:

# 计算并添加priceEUR列
merged_df['priceEUR'] = merged_df['price'] * merged_df['exchange rate']

# 如果你想直接在原df1上添加列,也可以这么写
df1['priceEUR'] = df1['price'] * df1.merge(df2, on='date', how='left')['exchange rate']

最终结果

运行完上述代码后,你会得到和预期完全一致的结果:

datepricepriceEUR
2019-12-21140155.358
2019-10-2591100.7734
2019-10-2491100.7643
2019-12-137077.56

额外小提示

  • 如果df2里有df1没有的日期,左连接会自动忽略这些无关行;
  • 如果df1中有日期在df2里找不到对应汇率,priceEUR会显示NaN,你可以用merged_df['priceEUR'].fillna(0)或者其他逻辑填充缺失值;
  • 要是觉得exchange rate列名带空格写起来麻烦,可以先重命名:df2.rename(columns={'exchange rate': 'exchange_rate'}, inplace=True),后续代码里直接用exchange_rate更顺手。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:27:47