如何将国家与年份列转换为按年份统计频次的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
相关产品推荐
相关产品推荐

