如何从国家列表创建空的国家-周纵向数据集?
这问题我熟!用Python的pandas库就能轻松生成你要的国家-周纵向数据集,给你两种实用的实现方式,按需选择即可:
方法1:利用笛卡尔积快速生成(推荐)
这种方法通过生成国家列表和周数的笛卡尔积,一步到位构建基础结构,代码简洁高效:
import pandas as pd # 定义你的国家列表 countries = ['Albania', 'Belgium', 'Zimbabwe'] # 生成1到52的周数序列 weeks = range(1, 53) # 生成国家与周数的所有组合(笛卡尔积),并设置索引名称 multi_index = pd.MultiIndex.from_product( [countries, weeks], names=['country', 'week'] ) # 转换为DataFrame,将索引转为列,并初始化其他变量为0 df_weekly = pd.DataFrame(index=multi_index).reset_index() # 按需添加任意初始为0的变量,比如这里示例添加两个变量 df_weekly['sales'] = 0 df_weekly['visits'] = 0
说明:
pd.MultiIndex.from_product会自动把每个国家和每一周进行配对,完美生成你需要的纵向结构- 后续可以直接通过
df_weekly['新变量名'] = 0添加更多初始为0的字段
方法2:用序列重复生成(直观易懂)
如果你更喜欢更直观的序列操作,也可以通过重复国家列表和周数序列来构建:
import pandas as pd countries = ['Albania', 'Belgium', 'Zimbabwe'] num_weeks = 52 # 每个国家重复52次,生成country列 country_col = [country for country in countries for _ in range(num_weeks)] # 周数1-52重复len(countries)次,生成week列 week_col = list(range(1, num_weeks + 1)) * len(countries) # 构建DataFrame并初始化变量 df_weekly = pd.DataFrame({ 'country': country_col, 'week': week_col }) # 添加初始为0的变量 df_weekly['revenue'] = 0 df_weekly['active_users'] = 0
扩展提示:
如果后续需要扩展到多年份的周数据,只需把年份也加入笛卡尔积/重复序列即可,比如:
years = [2023, 2024] multi_index = pd.MultiIndex.from_product([countries, years, weeks], names=['country', 'year', 'week'])
内容的提问来源于stack exchange,提问作者user9092346
相关产品推荐
相关产品推荐

