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

如何将国家与年份列转换为按年份统计频次的DataFrame

解决方法:将Country-Year数据转换为频次透视表

嘿,别担心,新手提问完全没问题的😉 你想要的其实就是把原始的两列数据转换成透视表,用Python的Pandas库就能轻松搞定,我给你两种实用的方法:

方法1:用pd.crosstab直接统计频次

这个方法最直接,专门用来统计类别组合的出现次数:

import pandas as pd

# 先构造你的示例数据(如果已有DataFrame可以跳过这部分)
data = [
    ["INDIA", 1970],
    ["USA", 1970],
    ["USA", 1971],
    ["INDIA", 1970],
    ["UK", 1972]
]
df = pd.DataFrame(data, columns=["country", "Year"])

# 生成你要的透视表
result_df = pd.crosstab(df["country"], df["Year"])
print(result_df)

运行后会输出:

Year     1970  1971  1972
country                  
INDIA       2     0     0
UK          0     0     1
USA         1     1     0

方法2:用pivot_table实现(更灵活)

如果之后你需要调整统计逻辑(比如改成求和、均值),用pivot_table会更方便,这里我们用它来统计频次:

# 同样基于上面的df
result_df = df.pivot_table(
    index="country",  # 行是国家
    columns="Year",   # 列是年份
    aggfunc="size",   # 统计每个组合的行数(出现次数)
    fill_value=0      # 把空值填充为0,不需要的话可以删掉这个参数
)
print(result_df)

如果你不需要填充0,删掉fill_value=0,空的位置就会显示NaN,也符合你示例里的空白效果~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:56:06