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

如何从双边净出口DataFrame生成各国总净贸易DataFrame?

计算各国总净贸易额的实现步骤

现有包含From(出口国)、To(进口国)、Net exports(净出口额)三列的pandas DataFrame df,数据如下:

{'From': {0: 'A', 1: 'A', 2: 'B', 3: 'C', 4: 'D'},
 'To': {0: 'B', 1: 'C', 2: 'C', 3: 'D', 4: 'A'},
 'Net exports': {0: 3, 1: 6, 2: 2, 3: 2, 4: 5}}

需求是生成新DataFrame df2,展示各国总净贸易额:国家出现在From列时对应净出口额做加法,出现在To列时做减法(例如A国总净贸易额为3+6-5=4)。已知可通过all_countries = list(set(df["From"]).union(set(df["To"])))获取所有国家列表,以下是具体实现步骤:


方法一:基于已获取的国家列表遍历计算

这种方法逻辑直观,适合理解基础原理:

  • 初始化空字典存储每个国家的总净贸易额
  • 遍历每个国家,分别计算其作为出口国的总金额、作为进口国的总金额
  • 用出口总额减去进口总额得到总净贸易额,存入字典
  • 将字典转换为目标DataFrame df2

代码实现:

import pandas as pd

# 假设已获取all_countries列表
all_countries = list(set(df["From"]).union(set(df["To"])))

# 初始化结果字典
total_net_trade = {}

for country in all_countries:
    # 计算该国家的总出口额
    total_export = df.loc[df["From"] == country, "Net exports"].sum()
    # 计算该国家的总进口额
    total_import = df.loc[df["To"] == country, "Net exports"].sum()
    # 计算总净贸易额
    total_net_trade[country] = total_export - total_import

# 转换为DataFrame并整理格式
df2 = pd.DataFrame(
    total_net_trade.items(),
    columns=["Country", "Total Net Trade"]
).sort_values("Country").reset_index(drop=True)

方法二:Pandas向量化分组聚合(更高效)

这种方法无需手动遍历,利用Pandas内置的分组功能,适合处理大数据量:

  • 分别对From列、To列分组,计算各国的出口总额和进口总额
  • 合并两组结果,缺失值填充为0(代表无对应出口/进口记录)
  • 计算总净贸易额并整理成目标DataFrame

代码实现:

import pandas as pd

# 计算各国出口总额
export_totals = df.groupby("From")["Net exports"].sum().rename("Total Exports")
# 计算各国进口总额
import_totals = df.groupby("To")["Net exports"].sum().rename("Total Imports")

# 合并数据并填充缺失值
combined_data = export_totals.to_frame().join(import_totals, how="outer").fillna(0)
# 计算总净贸易额
combined_data["Total Net Trade"] = combined_data["Total Exports"] - combined_data["Total Imports"]

# 转换为目标DataFrame df2
df2 = combined_data.reset_index().rename(columns={"index": "Country"})

两种方法最终得到的df2结果一致,示例输出如下:

CountryTotal Net Trade
A4
B-1
C-6
D3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:10:21