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

如何基于国家类别将DataFrame的Volume列与对应乘数相乘?

解决方案

你可以通过两种常用的Pandas方法实现需求:

方法1:使用merge合并匹配(直观易维护)

先将两个DataFrame按Country列合并,把对应国家的乘数关联到DataFrame A的每一行,再计算调整后的Volume值。

示例代码

import pandas as pd

# 初始化你的两个DataFrame
df_a = pd.DataFrame({
    'Country': ['USA', 'MX', 'MX'],
    'Volume': [360, 240, 520]
})

df_b = pd.DataFrame({
    'Country': ['USA', 'MX'],
    'Multiplier': [0.5, 0.25]
})

# 按Country左合并,保留df_a的所有行
merged_df = df_a.merge(df_b, on='Country', how='left')
# 计算调整后的Volume
merged_df['Adjusted_Volume'] = merged_df['Volume'] * merged_df['Multiplier']

# 查看结果
print(merged_df)

说明

  • how='left'确保df_a中所有行都被保留,如果某个国家在df_b中没有对应乘数,该行的Multiplier会显示为NaN,方便后续排查缺失数据。

方法2:使用map映射(高效简洁)

将df_b转换为{国家: 乘数}的字典,直接通过map方法将乘数匹配到df_a的对应行,再计算乘积。

示例代码

import pandas as pd

# 初始化DataFrame
df_a = pd.DataFrame({
    'Country': ['USA', 'MX', 'MX'],
    'Volume': [360, 240, 520]
})

df_b = pd.DataFrame({
    'Country': ['USA', 'MX'],
    'Multiplier': [0.5, 0.25]
})

# 将df_b转为字典
multiplier_map = df_b.set_index('Country')['Multiplier'].to_dict()
# 映射乘数并计算调整值
df_a['Adjusted_Volume'] = df_a['Volume'] * df_a['Country'].map(multiplier_map)

# 查看结果
print(df_a)

说明

  • 这种方法无需创建中间合并表,代码更简洁,处理大数据量时效率更高。

最终结果示例

处理后的数据会新增Adjusted_Volume列,内容如下:

CountryVolumeAdjusted_Volume
USA360180.0
MX24060.0
MX520130.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:25:40