使用Python按国家和年份匹配通胀表更新销售表数值
用Python实现销售数据的通胀调整
核心思路
使用pandas库完成表格匹配与计算,这是处理结构化表格数据最便捷的方案。步骤包括:按国家+年份合并两张表,计算通胀调整后的销售额,生成结果表。
示例实现
假设你的销售表和通胀表结构如下(实际使用时替换为你的数据源,比如读取CSV/Excel文件):
示例数据结构
销售表(Sales Table):
| 国家 | 年份 | 销售额 |
|---|---|---|
| 美国 | 2020 | 1000 |
| 美国 | 2021 | 1200 |
| 中国 | 2020 | 800 |
| 中国 | 2021 | 900 |
通胀表(Inflation Table):
| 国家 | 年份 | 通胀率 |
|---|---|---|
| 美国 | 2020 | 1.02 |
| 美国 | 2021 | 1.05 |
| 中国 | 2020 | 1.01 |
| 中国 | 2021 | 1.03 |
代码实现
import pandas as pd # 1. 加载数据(实际场景中可替换为pd.read_csv/pd.read_excel) # 销售表 sales_df = pd.DataFrame({ '国家': ['美国', '美国', '中国', '中国'], '年份': [2020, 2021, 2020, 2021], '销售额': [1000, 1200, 800, 900] }) # 通胀表 inflation_df = pd.DataFrame({ '国家': ['美国', '美国', '中国', '中国'], '年份': [2020, 2021, 2020, 2021], '通胀率': [1.02, 1.05, 1.01, 1.03] }) # 2. 按国家和年份匹配合并表格 # how='left':保留销售表所有数据,若通胀表无对应匹配则显示NaN merged_df = pd.merge(sales_df, inflation_df, on=['国家', '年份'], how='left') # 3. 计算通胀调整后的销售额 merged_df['调整后销售额'] = merged_df['销售额'] * merged_df['通胀率'] # 4. 整理结果表(可选,按需筛选列) result_df = merged_df[['国家', '年份', '销售额', '通胀率', '调整后销售额']] print(result_df)
输出结果
国家 年份 销售额 通胀率 调整后销售额 0 美国 2020 1000 1.02 1020.0 1 美国 2021 1200 1.05 1260.0 2 中国 2020 800 1.01 808.0 3 中国 2021 900 1.03 927.0
关键注意事项
- 数据一致性:确保两张表中的国家名称、年份格式完全匹配(比如年份都是整数,国家名称无拼写/大小写差异),否则匹配会失败。
- 缺失数据处理:如果通胀表存在缺失的国家-年份组合,
how='left'会保留销售表数据并标记为NaN。你可以用merged_df.dropna()删除缺失行,或merged_df.fillna(1.0)用默认通胀率(无通胀)填充。 - 通胀率格式转换:如果你的通胀率是百分比(比如
2代表2%),需要先转换为乘数:merged_df['通胀率'] = merged_df['通胀率'] / 100 + 1。
内容的提问来源于stack exchange,提问作者Mohamamd Khalil
相关产品推荐
相关产品推荐

